Когато казвате, че работите на сървъра, имате предвид чрез SQL*Plus?
Първото нещо, което трябва да проверите, е какъв действителен символ се съхранява - използвайте функцията DUMP, за да проверите това:
Функция за изхвърляне на Oracle
Това ще ви каже какво всъщност се съхранява. Ако веригата между вашето клиентско приложение и сървъра на Oracle не е подходяща, може да получите преобразуване на набор от знаци.
Ако приемем, че правилният знак се записва, това, което след това виждате на сървъра / sqlplus, е преобразуване на знаци на дисплея. т.е. Oracle "обслужва" символа правилно, но дисплеят не го обработва, както очаквате. За да коригирате това, трябва да настроите променливата на средата NLS_LANG на правилния набор от знаци.
например в скорошен проект по подразбиране:
set NLS_LANG=AMERICAN_AMERICA.US7ASCII
след това запитване на някои данни даде:
NAME
-----------------------------------
MS ELLIE MARTALL
Но:
set NLS_LANG=AMERICAN_AMERICA.US8PC437
След това изпълнението на заявката даде:
NAME
-----------------------------------
MS ÉLLIE MARTALL
И също така:
set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15
даде:
NAME
-----------------------------------
MS ╔LLIE MARTALL
Ключовото нещо тук е, че действителните данни са едни и същи, това е начинът, по който данните се представят на вашия дисплей, е това, което се различава и това поведение може да се контролира от NLS_LANG.