Když říkáte, že běžíte na serveru, máte na mysli SQL*Plus?
První věc, kterou je třeba zkontrolovat, je, jaký skutečný znak se ukládá – pomocí funkce DUMP zkontrolujte toto:
Funkce Oracle Dump
To vám řekne, co je skutečně uloženo. Pokud řetězec mezi vaší klientskou aplikací a serverem Oracle není vhodný, může dojít ke konverzi znakové sady.
Za předpokladu, že se ukládá správný znak, pak na serveru / sqlplus uvidíte konverzi znaků na displeji. Tj. Oracle „servíruje“ znak správně, ale displej s ním nepracuje tak, jak očekáváte. Chcete-li to vyřešit, musíte nastavit proměnnou prostředí NLS_LANG na správnou znakovou sadu.
např. v nedávném projektu výchozí:
set NLS_LANG=AMERICAN_AMERICA.US7ASCII
pak dotaz na některá data poskytl:
NAME
-----------------------------------
MS ELLIE MARTALL
Ale:
set NLS_LANG=AMERICAN_AMERICA.US8PC437
Potom spuštění dotazu poskytlo:
NAME
-----------------------------------
MS ÉLLIE MARTALL
A také:
set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15
dal:
NAME
-----------------------------------
MS ╔LLIE MARTALL
Klíčová věc je, že skutečná data jsou stejná, liší se způsob, jakým jsou data prezentována na vašem displeji, a toto chování lze ovládat pomocí NLS_LANG.