[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Особенности интернационализации

Широкие и многобайтовые символы
Многие пользователи набора символов ASCII привыкли, что термины "байт"
и "символ" взаимозаменяемы, так как любой ASCII символ помещается в
один байт (реально в 7 бит). Это предположение неверно, когда символы
берутся, например, из символьного набора  Kanji.
Для международных сред необходимо разграничить понятия "байт" и
"символ". Например, утверждение "Компонента пути в файловой системе X
имеет максимальную длину 14 символов" неверно. Компонента пути в
файловой системе X имеет максимальную длину 14 байт. А количество
символов, которые занимают 14 байт является локаль-специфичным.
Для представления символов в расширенных наборах символов используются
так называемые широкие (wide) и многобайтовые  (multibyte) символы.
Это необходимо для локалей, в которых 8 бит недостаточно для
представления всех символов.
ANSI Си определяет новый тип wchar_t для широких символов,
добавленных, преимущественно, для реализации азиатских языков. Широкий
символ есть интегральный тип, позволяющий отобразить любой символ в
любом данном наборе символов. Широкий символ - это внутреннее
представление многобайтового символа.
Многобайтовый символ - это представление, используемое для
производства операций ввода/вывода интернациональных символов или
символьных строк. Многобайтовый символ - это внешнее представление
широкого символа. Многобайтовое представление одного wchar_t символа
может занимать несколько байт и представляется массивом символов.
Например, в файле записаны два многобайтовых символа m1 и m2. В данный
момент m1 предшествует m2. Необходимо произвести над ними какие-то
манипуляции и записать их в обратном порядке. Для этого оба символа
считываются из файла. Далее, они превращаются в широкие символы при
помощи mbtowc(3C). Далее над ними производятся манипуляции. Наконец,
символы превращаются в многобайтовые представления при помощи
wctomb(3C) и записываются в файл в обратном порядке.
Соглашения о форматах. Например, возможность корректно производить
отображение числовой информации, денежных сумм - при условии, что
определена локаль.
Отношение упорядочивания. Сравнения/трансформации строк могут
производиться, основываясь на программных локалях.
Обработка сообщений. Сообщения, написанные на данном языке могут быть
прочитаны из файла, принадлежащих к данной локали.
Формат даты и времени. Дата и время могут быть обработаны в
соответствие с данной локалью.
                   ОСОБЕННОСТИ ИНТЕРНАЦИОНАЛИЗАЦИИ
.    Широкие и многобайтовые символы
.    Соглашения о форматах
.    Отношение упорядочивания
.    Обработка сообщений
.    Форматы даты и времени