Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wenn ich persische Zeichen in Oracle DB einfüge, sehe ich das Fragezeichen

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.