выбирая NLS_LANG для Oracle - PullRequest
       20

выбирая NLS_LANG для Oracle

2 голосов
/ 28 декабря 2011

По данным сайта, http://www.dba -oracle.com / t_nls_lang.htm

Проблема может возникнуть, даже если база данных и клиент используют один и тот же набор символов (AL32UTF8). Я не мог понять, как это может быть возможно. Цитирование с сайта:

Например, предположим, что набор символов базы данных - AL32UTF8, клиент является английской операционной системой Windows, а NLS_LANG настройка на клиенте AL32UTF8. Данные, поступающие в базу данных кодируется в WE8MSWIN1252 и не преобразуется в данные AL32UTF8 потому что настройка NLS_LANG на клиенте совпадает с базой данных набор символов. Таким образом, Oracle предполагает, что преобразование не требуется, и неверные данные введены в базу данных.

Как данные могут поступать в качестве базы данных WE8MSIN1252 в базу данных, если кодировка в клиенте AL32UTF8 ?.

1 Ответ

6 голосов
/ 28 декабря 2011

Потому что сама ОС использует другой набор символов (в данном случае WE8MSIN1252). Но поскольку NLS_LANG (на клиенте) имеет значение AL32UTF8, Oracle не знает об этом. Oracle всегда использует значение в NLS_LANG и игнорирует системные настройки, в то время как (почти) все другое программное обеспечение использует настройки ОС.

Итак, чтобы решить эту проблему, локальный (клиентский) NLS_LANG должен совпадать с набором символов ОС. Или (другой вариант) программное обеспечение, работающее на клиенте, должно самостоятельно перекодировать символы.

...