Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Схема кодировки совместимости для UTF-16: 8-разрядный ( CESU-8 ) представляет собой вариант UTF-8 , который описан в Unicode Технический отчет # 26. [1] Кодовая точка Unicode из базовой многоязычной плоскости (BMP), то есть кодовая точка в диапазоне от U + 0000 до U + FFFF, кодируется так же, как в UTF-8. Дополнительный символ Unicode, то есть кодовая точка в диапазоне от U + 10000 до U + 10FFFF, сначала представляется как суррогатная пара, как в UTF-16., а затем каждая суррогатная кодовая точка кодируется в UTF-8. Следовательно, CESU-8 требует шесть байтов (3 байта на суррогат) для каждого дополнительного символа Unicode, тогда как UTF-8 требует только четыре. Хотя это и не указано в техническом отчете, непарные суррогаты также кодируются как 3 байта каждый, а CESU-8 точно такой же, как применение более старого конвертера UCS-2 в UTF-8 к данным UTF-16.

Кодировка символов Unicode, отличных от BMP, работает до 11101101 1010yyyy 10xxxxxx 11101101 1011xxxx 10xxxxxx(yyyy представляет пять верхних битов символа минус один). Значение байта 0xF0 не будет отображаться в CESU-8, поскольку оно запускает 4-байтовую кодировку, используемую UTF-8. .

CESU-8 не является официальной частью стандарта Unicode, поскольку технические отчеты Unicode являются только информативными документами. [2] Его следует использовать исключительно для внутренней обработки, а не для обмена внешними данными.

Поддержка CESU-8 в документах HTML запрещена стандартами HTML W3C [3] [4] и WHATWG [5] , так как это может привести к уязвимости межсайтового скриптинга . [6]

Модифицированный Java - код UTF-8 - это CESU-8 с дополнительной специальной кодировкой символа NUL (U + 0000).

База данных Oracle использует CESU-8 для набора символов «UTF8». Стандартный UTF-8 можно получить с помощью набора символов « AL32UTF8 » (начиная с версии Oracle 9.0).

Примеры [ править ]

Ссылки [ править ]

Внешние ссылки [ править ]