sql >> Database teknologi >  >> RDS >> Oracle

Oracle konfigurerede standard NLS_LANG

Dette er, hvad der sandsynligvis sker:

  • Dit klienttegnsæt skal være noget som CP1252 eller ISO-8859-15, mens din klient faktisk bruger UTF8.
  • I dette tegnsæt (UTF8), symbolet á tager to bytes, så din klient sender disse to bytes, mens du fortæller Oracle om at behandle disse som CP1252. I CP1252 koder de to bytes for to tegn, hvilket resulterer i, at DB'en fortolker inputtet som to tegn, derfor length('à') er lig med 2 (og hvis du indsætter denne streng, er resultatet af indsættelsen ikke lig med à )
  • Når du indstiller tegnsættet korrekt, behandles input korrekt af oracle som et enkelt tegn, og dets længde er 1 (stadig to bytes).

Konklusion:Indstil dit klienttegnsæt korrekt, ellers vil du få oversættelsesfejl (du får ikke ulovlige tegn på denne måde, men du kan få mærkelige symboler (¿ ).

Databasens tegnsæt indstilles på oprettelsestidspunktet og ændres generelt via eksport/opret tom database/import.



  1. MySQL select distinct virker ikke

  2. mysqli_stmt::bind_param():Antallet af elementer i typedefinitionsstrengen matcher ikke antallet af bindevariabler

  3. FEJL:tilladelse nægtet for skema user1_gmail_com ved tegn 46

  4. php konverter array til et hierarkisk indlejret sæt til database