Når du siger, at du kører på serveren, mener du gennem SQL*Plus?
Den første ting at kontrollere er, hvilket faktiske tegn der gemmes - brug DUMP-funktionen til at kontrollere dette:
Oracle Dump-funktion
Dette vil fortælle dig, hvad der faktisk er gemt. Hvis kæden mellem din klientapp og Oracle-serveren ikke er passende, kan du muligvis få tegnsætkonvertering.
Forudsat at det korrekte tegn bliver gemt, er det, du så på serveren / sqlplus, tegnkonvertering på displayet. dvs. Oracle "serverer" karakteren korrekt, men skærmen håndterer den ikke, som du forventer. For at løse dette skal du indstille miljøvariablen NLS_LANG til det korrekte tegnsæt.
f.eks. i et nyligt projekt er standarden:
set NLS_LANG=AMERICAN_AMERICA.US7ASCII
derefter forespørge nogle data gav:
NAME
-----------------------------------
MS ELLIE MARTALL
Men:
set NLS_LANG=AMERICAN_AMERICA.US8PC437
Kørsel af forespørgslen gav derefter:
NAME
-----------------------------------
MS ÉLLIE MARTALL
Og også:
set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15
gav:
NAME
-----------------------------------
MS ╔LLIE MARTALL
Det vigtigste her er, at de faktiske data er de samme, det er den måde, data bliver præsenteret på din skærm, der adskiller sig, og den adfærd kan kontrolleres af NLS_LANG.