Схема кодировки совместимости для 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).
Примеры [ править ]
Кодовая точка Unicode | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
U + 0045 | U + 0205 | U + 10400 | |||||||||||||||||
E | ȅ | 𐐀 | |||||||||||||||||
UTF-8 | 45 | C8 | 85 | F0 | 90 | 90 | 80 | ||||||||||||
UTF-16 | 0045 | 0205 | D801 | DC00 | |||||||||||||||
ЦЭСУ-8 | 45 | C8 | 85 | ED | A0 | 81 год | ED | B0 | 80 |
Ссылки [ править ]
- ^ Макгоуэн, Рик. «Технический отчет Unicode № 26 - Схема кодирования совместимости для UTF-16: 8-бит (CESU-8)» . Консорциум Unicode.
- ^ «О технических отчетах Unicode - Типы технических отчетов Unicode: UAX, UTS, UTR» . Консорциум Unicode.
- ^ «8.2.2.3. Кодировки символов» . Стандарт HTML 5.1 . W3C.
- ^ «8.2.2.3. Кодировки символов» . Стандарт HTML 5 . W3C.
- ^ «12.2.3.3 Кодировки символов» . Уровень жизни HTML . WHATWG.
- ^ "<meta> - HTML" . Веб-документы MDN . Mozilla.