Wenn Sie sagen, dass Sie auf dem Server laufen, meinen Sie damit SQL*Plus?
Als erstes ist zu überprüfen, welches Zeichen tatsächlich gespeichert wird - verwenden Sie die DUMP-Funktion, um dies zu überprüfen:
Oracle-Dump-Funktion
Hier erfahren Sie, was tatsächlich gespeichert wird. Wenn die Kette zwischen Ihrer Client-App und dem Oracle-Server nicht geeignet ist, kommt es möglicherweise zu einer Zeichensatzkonvertierung.
Unter der Annahme, dass das richtige Zeichen gespeichert wird, sehen Sie dann auf dem Server / sqlplus die angezeigte Zeichenkonvertierung. D.h. Oracle "serviert" das Zeichen korrekt, aber die Anzeige behandelt es nicht wie erwartet. Um dies zu beheben, müssen Sie die Umgebungsvariable NLS_LANG auf den richtigen Zeichensatz setzen.
z. B. in einem neueren Projekt die Vorgabe:
set NLS_LANG=AMERICAN_AMERICA.US7ASCII
dann einige Daten abfragen gab:
NAME
-----------------------------------
MS ELLIE MARTALL
Aber:
set NLS_LANG=AMERICAN_AMERICA.US8PC437
Das Ausführen der Abfrage ergab dann:
NAME
-----------------------------------
MS ÉLLIE MARTALL
Und auch:
set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15
gab:
NAME
-----------------------------------
MS ╔LLIE MARTALL
Das Wichtigste hier ist, dass die tatsächlichen Daten gleich sind, es ist die Art und Weise, wie Daten auf Ihrem Display dargestellt werden, was sich unterscheidet, und dieses Verhalten kann von NLS_LANG gesteuert werden.