Корпоративные базы данных - статьи

Национальные алфавиты и таблицы кодировок



В каждой стране используется свой алфавит - набор символов (немецкий, французский, испанский,
русский). Для их представления обычно используются "Таблицы Кодировок", содержащие коды от
нуля до двухсот пятидесяти пяти. Однако в некоторых случаях одного байта не хватает для
представления всех символов алфавита (китайский, японский, корейский). PROGRESS
предоставляет возможность работы как с однобайтовыми и двубайтовыми таблицами
кодировок.

В России известно несколько Таблиц Кодировок альтернативная, основная, дополнительная. В
операционных системах DOS, MS-WINDOWS, UNIX также используются различные Таблицы
Кодировок. Рассмотрим как в Progress осуществляется описание, настройка и динамическое
преобразование Таблиц Кодировок для различных операционных систем и оборудования.
Описанный ниже алгоритм позволяет освободить разработчика от задач, связанных с
локализацией продуктов и настройкой их на работу в конкретном операционном окружении, что


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

Вся информация необходимая для настройки Таблиц Кодировок, в PROGRESS они называются
кодовыми страницами, содержится в файле convmap.cp. Этот файл хранится во внутреннем
формате PROGRESS, и создается специальной утилитой из обычного текстового файла
convmap.dat.

В данном файле хранится несколько специальных таблиц, двух типов - определения кодовых
страниц и правил сортировки.


  1. Для каждой кодовой страницы определяется таблица букв - ISALPHA, в которой указывается
    является ли символ буквой или нет (знак пунктуации, цифра и т.д.). Progress использует эту
    таблицу для проверки символов при вводе с определением формата. Таблица ISALPHA состоит из
    256 полей, пронумерованных от 0 до 255. Каждое поле соответствует одному символу кодовой
    таблицы. Если символ является буквой, то в соответствующем ему поле стоит значение 001. В
    противном случае значение поля равняется 000.

    Для каждого символа от 0 до 255, является ли он буквой или нет.
    В случае, если символ является
    буквой, в таблице 1 на соответствующему ему месте стоит код 001. В противном случае - 000. Тип
    таблицы указывает используется ли данная таблица для однобайтовой кодировки или нет.
    Значение TYPE 1 указывает, что данная таблица используется для однобайтовых кодировок.

    ====

    CodePAGE

    CODEPAGE-NAME "NEW1"

    TYPE "1"

    ISALPHA

    /*000-015*/ 000 000 000 000 000 000 000 000 000 000 000 000 000 000
    000 000

    /*016-031*/ 000 000 000 000 000 000 000 000 000 000 000 000 000 000
    000 000

    .

    .

    /*128-143*/ 001 001 001 001 001 001 001 001 001 001 001 001 001 001
    001 001

    .

    .

    /*240-255*/ 000 000 000 000 000 000 000 000 000 000 000 000 000 000
    000 000

    ENDTABLE

    ENDCODEPAGE

  2. Следующие две таблицы - UPPERCASE-MAP и LOWERCASE-MAP, определяют правила
    преобразования прописных букв в заглавные и наоборот. Для каждой кодовой страницы
    возможно задание нескольких пар таких таблиц. Как правило, используется пара под названием
    BASIC. Эти таблицы используются как при вводе информации, так и при выполнении операторов
    LowerCase, CAPS и др.

  3. Таблица преобразований кодовых страниц - CONVERT. Эти таблицы определяют правила
    перекодировок между двумя различными кодовыми таблицами. Таких таблиц может быть
    несколько, но обязательно должна существовать по крайней мере одна из них.

  4. Для задания правил сортировки используется две таблицы CASE-SENSITIVE-SORT и CASE-
    INSENSITIVE-SORT. В первом случае вначале идут все заглавные буквы, а затем все прописные.
    Во втором случае порядок следования символов будет следующим "A", "a", "Б", "б" и т.д.

    После определения все этих таблиц необходимо запустить утилиту преобразования получившегося
    файла (convmap.dat) во внутренний формат Progress (convmap.cp).

    Proutil -C codepage-compiler ....\convmap.dat ....\convmap.cp

    После выполнения всех этих действий Вы уже можете использовать подготовленную Вами
    кодовую страницу. Для этого в стартовом файле необходимо указать значение параметра -
    convmap.



Содержание раздела