logo search
Книга по БД(Вальке А

6.5. Работа с русским языком

Informix Dynamic Server, как другие продукты фирмы Informix, поддерживают работу с русским языком. Поддержка русского языка осуществляется на основе стандарта GLS (Global Language Support – поддержка национального языка). Суть этой поддержки в следующем – существуют специальные файлы, в которых описываются набор допустимых символов, порядок сортировки букв в данном алфавите, способы перекодировки из одной кодовой таблицы в другую (если для данного языка есть несколько кодовых страниц). На основе этой информации сервер БД определяет

Как известно, в отечественной практике используется несколько кодовых страниц для работы с русским языком. В стандартной поставке имеются следующие локали (локаль – это описание конкретной кодовой страницы):

Если Вы применяете кодировку, отличную от перечисленных выше, то в службе технической поддержки Informix специально для вас могут скомпилировать файл с поддержкой конкретной локали.

В сервер баз данных Informix Dynamic Server введены два новых специальных типа данных, максимально полно обеспечивающих работу с национальными языками – это типы NCHAR и NVARCHAR. Эти типы используются вместо типов CHAR и VARCHAR соответсвенно. То есть, при создании таблицы с текстовыми полями с русскими символами следует использовать типы NCHAR и NVARCHAR. Использование этих модифицированных типов данных прозрачно для приложений.

Для корректной работы с русскими данными в сервере БД Informix следует выполнить следующие действия. Первое – надо создать базу данных с поддержкой русского языка, то есть с конкретной русской кодировкой. Второе, для обеспечения доступа к этой базе данных, на клиенте надо корректно прописать кодировку клиентской программы и кодировку в базе данных.

Если вы работаете в алфавитно-цифровом режиме, то для этого используются переменные окружения DB_LOCALE и CLIENT_LOCALE. Первая отвечает за кодировку в базе данных, а вторая – за кодировку на клиенте. Естественно, значения этих переменных могут различаться. Возможные значения данных переменных, соответсвенно: ru_ru.866, ru_ru.1251, ru_ru.8859-5 и ru_ru.koi-8. Если вы, например, хотите запустить некоторое терминальное приложение my_application, ваш терминал работает в кодировке КОИ-8, а данные в БД лежат в кодировке ISO, то надо выполнить следующие команды:

DB_LOCALE=ru_ru.8859-5; export DB_LOCALE CLIENT_LOCALE=ru_ru.koi-8; export CLIENT_LOCALE my_application

Переменные DB_LOCALE и CLIENT_LOCALE должны быть установлены и тогда, когда вы только создаете базу данных. В этом случае оператор CREATE DATABASE, явно или неявно выполненный из данной сессии, создаст БД с кодировкой, которая задана переменной DB_LOCALE.

Если вы используете графическое окружение, например MS Windows, то переменные DB_LOCALE и CLIENT_LOCALE следует установить в окне настроек:

С одной и той же базой данных, использующей вполне конкретную кодировку для хранения русских символов, одновременно могут работать несколько клиентов с разной кодировкой. Для каждого клиента следует установить свое значение переменной CLIENT_LOCALE и сервер БД будет автоматически проводить преобразование символов для каждого клиента.

Для того, чтобы узнать, какие кодовые страницы поддерживаются в конкретном сервере Informix, следует запустить команду glfiles –lc, которая сформирует в текущей директории текстовый файл, содержащий все возможные кодировки.