Als je zegt dat je op de server draait, bedoel je via SQL*Plus?
Het eerste dat u moet controleren, is welk teken daadwerkelijk wordt opgeslagen - gebruik de DUMP-functie om dit te controleren:
Oracle Dump-functie
Dit zal u vertellen wat er daadwerkelijk is opgeslagen. Als de keten tussen uw client-app en Oracle-server niet geschikt is, kan er een tekensetconversie plaatsvinden.
Ervan uitgaande dat het juiste teken wordt opgeslagen, ziet u op de server / sqlplus tekenconversie op het scherm. D.w.z. Oracle "serveert" het karakter correct, maar het scherm behandelt het niet zoals je zou verwachten. Om dit op te lossen, moet u de omgevingsvariabele NLS_LANG instellen op de juiste tekenset.
bijv. in een recent project is de standaardinstelling:
set NLS_LANG=AMERICAN_AMERICA.US7ASCII
bevraag vervolgens enkele gegevens die gaven:
NAME
-----------------------------------
MS ELLIE MARTALL
Maar:
set NLS_LANG=AMERICAN_AMERICA.US8PC437
Toen het uitvoeren van de query gaf:
NAME
-----------------------------------
MS ÉLLIE MARTALL
En ook:
set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15
gaf:
NAME
-----------------------------------
MS ╔LLIE MARTALL
Het belangrijkste hier is dat de feitelijke gegevens hetzelfde zijn, het is de manier waarop gegevens op uw scherm worden weergegeven wat verschilt, en dat gedrag kan worden gecontroleerd door NLS_LANG.