sql >> Database >  >> RDS >> Oracle

Oracle heeft standaard NLS_LANG ingesteld

Dit is wat er waarschijnlijk gebeurt:

  • Je client-tekenset moet zoiets zijn als CP1252 of ISO-8859-15, terwijl je client in feite UTF8 gebruikt.
  • In deze tekenset (UTF8), het symbool á neemt twee bytes in beslag, dus uw klant stuurt deze twee bytes, terwijl hij Oracle vertelt deze te behandelen als CP1252. In CP1252 coderen de twee bytes voor twee tekens die ertoe leiden dat de DB de invoer als twee tekens interpreteert, dus length('à') is gelijk aan 2 (en als u deze tekenreeks invoegt, is het resultaat van de invoeging niet gelijk aan à )
  • Als je de tekenset correct instelt, wordt de invoer door oracle correct behandeld als een enkel teken en is de lengte 1 (nog steeds twee bytes).

Conclusie:stel de tekenset van uw client correct in of u krijgt vertaalfouten (u krijgt op deze manier geen illegale tekens, maar u krijgt mogelijk vreemde symbolen (¿ ).

De karakterset van de database wordt ingesteld op het moment van aanmaken en wordt over het algemeen gewijzigd via export/lege database aanmaken/importeren.



  1. MySQL krijgt hoeveelheden van de afgelopen 12 maanden gegroepeerd per maand

  2. Android Studio kan geen expliciete activiteitsklasse vinden

  3. Meerdere rijen in dezelfde tabel invoegen - Oracle 10g

  4. Hoe deze groep ActiveRecord-query in postgres te doen