logo search
Литература_1 / photon_old

Широкие и многобайтовые символы

ANSI С включает в себя следующие понятия:

широкий символ

Символ, представленный как значение типа wchar_t, которое обычно больше чем char

многобайтовый символ

Последовательность из одного или более байтов, представляющих символ, хранимый в массиве char. Количество байтов зависит от символа

широкосимвольная строка

Массив типа wchar_t

многобайтовый символ

Последовательность многобайтовых символов, хранящаяся в массиве char

    1. Unicode

Unicode является 32-битовой схемой кодирования:

Он упаковывает большинство международных символов в широкосимвольном представлении (два байта на символ)

Коды меньше 128 определяют те же символы, что и стандарт ANSII.

Коды между 128 и 255 определяют те же символы, что и в наборе символов ISO 8859-1.

Существует область для частного использования в диапазоне от 0хЕ000 до 0хF7FF; Photon отображает её следующим образом:

Глифы

Диапазон

Неотображаемые клавиши

0хF000 – 0xF0FF

Курсорный шрифт

0xE900 – 0xE9FF

Значение символов Unicode см. в файле /usr/include/photon/PkKeyDef.h. Более подробно об Unicode см. на вебсайте консорциума Unicode по адресу www.unicode.org.

    1. UTF-8 кодирование

Известный прежде как UTF-2, формат преобразования UTF-8 (для "8-битовой формы") спроектирован для использования данных в символах Unicode в 8-битовом окружении UNIX. Каждое значение Unicode кодируется как многобайтовая последовательность UTF-8.

Вот некоторые из основных особенностей UTF-8:

isInitialByte = ((byte & 0xC0) !=0x80);

В настоящее время кодировка такова:

В следующей таблице показана бинарная форма каждого байта кодирования и минимальное и максимальное значения символов, представленных 1-, 2-, 3-, и 4-байтовым кодированием:

Длина

Первый байт

Следующие байты

Минимальное значение

Максимальное значение

Один байт

0xxxxxxx

нет

0x0000

0x007F

Два байта

110xxxxx

10xxxxxx

0x0080

0x07FF

Три байта

1110xxxx

10xxxxxx

0x0800

0xFFFF

Четыре байта

11110xxx

10xxxxxx

0x10000

0x10FFFF