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, derforlength('à')
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.