Ö и другие специальные символы неправильно сохраняются в базе данных клиента - PullRequest
0 голосов
/ 28 января 2020

Когда я выполняю код на своем конце, символы сохраняются правильно. Но когда один и тот же код с теми же данными выполняется на стороне клиента, символы меняются, когда они записываются в базу данных, и это вызывает проблемы, когда они отображаются на экране. Тип данных столбца varchar2.

Первоначально я думал, что набор символов базы данных в их конце будет отличаться от моего, поэтому я запросил параметры NLS у клиента. Оказывается, набор символов тот же, но язык и территория разные. Я думаю, что это может быть причиной этой проблемы, но я не уверен. Если да, как я могу попросить их изменить его?

Paramter            Client        Me
NLS_CHARACTERSET    AL32UTF8      AL32UTF8
NLS_LANGUAGE        GERMAN        AMERICAN
NLS_TERRITORY       AUSTRIA       AMERICA

Пожалуйста, скажите мне, если мне нужно добавить дополнительную информацию.

РЕДАКТИРОВАТЬ: Проблема не была с набором символов базы данных, это был с приложением. Исправлена ​​эта проблема после добавления -Dfile.encoding = UTF-8 в аргументы jvm.

1 Ответ

0 голосов
/ 28 января 2020

Вы можете либо попросить пользователя выполнить следующую команду (с помощью cmd на windows) только для текущего сеанса

set NLS_LANG=GERMAN_AUSTRIA.AL32UTF8

, а затем запустить приложение из того же сеанса для проверки, если это возможно.

Имейте в виду, что все сообщения базы данных будут автоматически переведены на немецкий язык, например:

SQL> jj
SP2-0042: Unbekannter Befehl "jj" - restliche Zeile wurde ignoriert.

Это может раздражать, если вы отправляете «необработанное» сообщение oracle не - говорящий по-немецки клиент

После успешного завершения теста вы можете либо установить системную переменную NLS_LANG равной значению, которое вы дали ранее, либо go редактору реестра на клиентском компьютере windows (если применимо) и установить значение параметра NLS_LANG для Oracle дома в

HKLM \ Software \ Oracle

Это изменит параметр для любого сеанса, который запускается пользователем

...