Настройка и работа
В только что созданной базе данных таблицы $$$CHARSET и $$$TRANSL отсутствуют, и для работы базы данных используется интегрированная кодовая страница 20127(US-ASCII), имеющая имя «DEFAULT» и содержащая 127 символов. После создания системного словаря эта кодовая страница может быть подменена любой другой, носящей то же имя. Таким образом, кодовая страница «DEFAULT» является первой кодовой страницей по умолчанию в базе данных. Кодовая страница по умолчанию используется в двух случаях:
• в символах этой кодовой страницы хранится системный словарь (названия таблиц, столбцов, триггеров, процедур и т. д.);
• при создании таблиц и столбцов без явного указания кодовой страницы, им назначается кодовая страница базы данных по умолчанию.
В настоящее время кодовая страница по умолчанию может быть только однобайтовой. Сменить кодовую страницу по умолчанию можно с помощью SQL- команды «SET DATABASE NAMES …;». Например команда «SET DATABASE NAMES CP866;» устанавливает по умолчанию кодовую страницу 866. Если вслед за этим подать команду «CREATE TABLE A (B CHAR(5));», то для таблицы A и столбца B будет установлена кодовая страница 866. Если же, например, подать команду «CREATE TABLE A (B CHAR(5) CHARACTER SET CP1251);», то для столбца B будет установлена кодовая страница 1251.
Для нормальной работы с кодовой страницей рекомендуется явно задать ее на клиентской части. Это проще всего сделать, задав переменную окружения:
set LINTER_CP=CP932
Этот пример для случая, если мы хотим работать с японской SJIS-кодовой страницей CP932.
Данные в столбцах в произвольной национальной кодовой странице могут храниться двумя способами:
• в текстовых столбцах таблиц с заданной национальной кодовой страницей;
• в UNICODE-столбцах таблиц.
В качестве длин текстовых полей указывается их размер в байтах.
Проиллюстрируем оба этих способа на примере японской кодовой страницы CP932 (эта японская кодовая страница содержит как однобайтовые, так и двухбайтовые символы.):
CREATE TABLE TBL_JP( JSTR CHAR( 30 ) CHARACTER SET CP932 ); INSERT INTO TBL_JP VALUES ('???1'); INSERT INTO TBL_JP VALUES ('???2');
CREATE TABLE TBL_JP1( JSTR1 NCHAR( 30 )); INSERT INTO TBL_JP1 VALUES (N'???1N'); INSERT INTO TBL_JP1 VALUES (N'???2N');
На рисунке 1 показано, как будет представлена выборка из данной таблицы в утилите LinDesk :

Рисунок 1. Отображение национальных символов.
Следует отметить еще один важный момент. Поскольку хранение многобайтовых кодовых страниц требует существенного объема оперативной памяти, то внутри СУБД такие страницы хранятся в отдельной очереди, которая по умолчанию не инициализирована. Ее инициализация происходит только в результате занесения в таблицу $$$CHARSET первой многобайтовой кодовой страницы и последующего перезапуска базы данных.
В заключение следует сказать, что реализованная в шестой версии СУБД ЛИНТЕР система многоязыковой поддержки обладает рядом существенных преимуществ: простота реализации, возможность гибкой настройки, расширяемость данной системы по мере необходимости. В то же время следует обратить внимание, что для полноценного использования всех этих возможностей следует очень серьезно подойти к проектированию базы данных, а также внимательно изучить примеры, прилагаемые к документации СУБД.