Wahrscheinlich passiert Folgendes:
- Ihr Client-Zeichensatz muss so etwas wie CP1252 oder ISO-8859-15 sein, obwohl Ihr Client tatsächlich UTF8 verwendet.
- In diesem Zeichensatz (UTF8) ist das Symbol
á
nimmt zwei Bytes, also sendet Ihr Client diese zwei Bytes, während er Oracle anweist, diese als CP1252 zu behandeln. In CP1252 codieren die zwei Bytes für zwei Zeichen, was dazu führt, dass der DB die Eingabe als zwei Zeichen interpretiert, alsolength('à')
gleich 2 (und wenn Sie diesen String einfügen, ist das Ergebnis der Einfügung ungleichà
) - Wenn Sie den Zeichensatz richtig eingestellt haben, wird die Eingabe von Oracle korrekt als einzelnes Zeichen behandelt und hat die Länge 1 (immer noch zwei Bytes).
Fazit:Stellen Sie Ihren Client-Zeichensatz richtig ein, oder Sie erhalten Übersetzungsfehler (Sie erhalten auf diese Weise keine illegalen Zeichen, aber möglicherweise seltsame Symbole (¿
).
Der Datenbankzeichensatz wird zum Zeitpunkt der Erstellung festgelegt und in der Regel über Exportieren/Leere Datenbank erstellen/Importieren geändert.