Схема кодирования совместимости для UTF-16: 8-битная (CESU-8 ) является вариантом UTF-8, описанный в Unicode техническом отчете №26. Кодовая точка Unicode из Basic Multilingual Plane (BMP), то есть кодовая точка в диапазоне от U + 0000 до U + FFFF, кодируется так же, как в UTF-8. Дополнительный символ Unicode, то есть кодовая точка в диапазоне от U + 10000 до U + 10FFFF, сначала представляется как суррогатная пара, как в UTF-16, а затем каждая суррогатная кодовая точка кодируется в UTF -8. Следовательно, CESU-8 требует шесть байтов (3 байта на суррогат) для каждого дополнительного символа Юникода, тогда как 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 являются только информационными документами. Его следует использовать исключительно для внутренней обработки, а не для обмена внешними данными.
Поддержка CESU-8 в документах HTML запрещена стандартами W3C и WHATWG HTML, так как это может привести к перекрестию -site scripting уязвимость.
Java Modified 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 | |||||||||||||||
CESU-8 | 45 | C8 | 85 | ED | A0 | 81 | ED | B0 | 80 |