10.10.2018 10:13
OlegON
 
Итак, многие путаются в подарке с кодировками, особенно жертвы маркетинга Билла Гейтса.



NLS_LANG - параметр клиентской части. Т.е. он используется для подключения клиента. Сопоставлять этот параметр на сервере и клиенте нет смысла. На сервере он только для клиентской части, подключающейся локально.

NLS_LANG может выставляться через переменные окружения и через реестр Windows. Приоритетным считается выставление переменных окружения. Именно через них я и предпочитаю выставлять NLS_LANG, собственно, рекомендую. С реестром много нюансов, начиная с того, что там идет дробление по HOME и заканчивая тем, что винда иногда ветку не может прочитать.

NLS_LANG состоит из двух частей, разделенных точкой. В первой части идет параметр, определяющий региональные настройки, сортировку и сообщения об ошибках, во второй - кодировка клиента.

В настоящий момент на территории России в ходу следующие варианты префиксов:
AMERICAN_AMERICA
RUSSIAN_CIS
RUSSIAN_RUSSIA
собственно, RUSSIAN_CIS устарела достаточно давно, однако, старые клиенты все еще используют этот префикс. Мне кажется, что RUSSIAN_CIS используют клиенты до 11 версии, могу ошибаться - поправьте, пожалуйста. Главное - помнить об этом моменте.

О кодировках. В России, соответственно, чаще всего используются:
AL32UTF8 - UTF-8, это Linux
CL8MSWIN1251 - Windows-1251
RU8PC866 - Windows в консоли
CL8ISO8859P5 - кодировка, например, используемая ЦФТ на Solaris

Если вы ошибетесь в написании параметра или его значения, он будет проигнорирован. В некоторых случаях sqlplus будет ругаться.

В общем и целом могу порекомендовать на сервере использовать префикс AMERICAN_AMERICA, кодировку, совпадающую с кодировкой базы, выставляя это глобальной переменной.

Например, для Супермага это
Код:
NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
Для ЦФТ
Код:
NLS_LANG=AMERICAN_AMERICA.CL8ISO8859P5
На клиенте все немного сложнее, поскольку клиент может стоять не один, с репортсами и прочим. Вообще по умолчанию клиентская часть и так нормально работает. Если же нет - лучше смотреть в каждом конкретном случае.

Прошу добавлять особенности, с которыми сталкивались вы.
Часовой пояс GMT +3, время: 09:26.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.