[<<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) и записываются в файл в обратном порядке.
Соглашения о форматах. Например, возможность корректно производить
отображение числовой информации, денежных сумм - при условии, что
определена локаль.
Отношение упорядочивания. Сравнения/трансформации строк могут
производиться, основываясь на программных локалях.
Обработка сообщений. Сообщения, написанные на данном языке могут быть
прочитаны из файла, принадлежащих к данной локали.
Формат даты и времени. Дата и время могут быть обработаны в
соответствие с данной локалью.
ОСОБЕННОСТИ ИНТЕРНАЦИОНАЛИЗАЦИИ
. Широкие и многобайтовые символы
. Соглашения о форматах
. Отношение упорядочивания
. Обработка сообщений
. Форматы даты и времени