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