ЦЭСУ-8
Схема кодирования совместимости для UTF-16: 8-бит ( CESU-8 ) — это вариант UTF-8 , описанный в Техническом отчете Unicode № 26. [1] Кодовая точка Unicode из базовой многоязычной плоскости (BMP), т. е. кодовая точка в диапазоне от U+0000 до U+FFFF, кодируется так же, как в UTF-8. Дополнительный символ Юникода, то есть кодовая точка в диапазоне от 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–0xF4 не появятся в CESU-8, поскольку они запускают 4-байтовые кодировки, используемые UTF-8.
CESU-8 не является официальной частью стандарта Unicode, поскольку технические отчеты Unicode являются лишь информационными документами. [2] Его следует использовать исключительно для внутренней обработки и никогда для внешнего обмена данными.
Поддержка CESU-8 в HTML -документах запрещена W3C . [3] [4] и ЧТОРГ [5] HTML-стандарты, так как это может привести к уязвимости межсайтового скриптинга . [6]
Java Модифицированный код UTF-8 — это CESU-8 со специальной удлиненной кодировкой символа NUL (U+0000) в виде двухбайтовой последовательности. C0 80
. [7]
База данных Oracle использует CESU-8 в качестве набора символов «UTF8». Стандартный UTF-8 можно получить, используя набор символов « AL32UTF8 » (начиная с версии Oracle 9.0).
Примеры [ править ]
Кодовая точка | U + 0045 | U + 0205 | U+10400 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Характер | И | ƒ | 𐐀 | ||||||||||||
UTF-8 | 45 | С8 | 85 | Ф0 | 90 | 90 | 80 | ||||||||
UTF-16 | 0045 | 0205 | Д801 | DC00 | |||||||||||
ЦЭСУ-8 | 45 | С8 | 85 | ЭД | А0 | 81 | ЭД | Б0 | 80 |
Ссылки [ править ]
- ^ Макгоуэн, Рик. «Технический отчет Unicode № 26 — Схема кодирования совместимости для UTF-16: 8-бит (CESU-8)» . Консорциум Юникод.
- ^ «О технических отчетах Unicode — Типы технических отчетов Unicode: UAX, UTS, UTR» . Консорциум Юникод.
- ^ «8.2.2.3. Кодировки символов» . Стандарт HTML 5.1 . W3C.
- ^ «8.2.2.3. Кодировки символов» . Стандарт HTML5 . W3C.
- ^ «12.2.3.3 Кодировки символов» . HTML Уровень жизни . ЧТОРГ.
- ^ «<мета> — HTML» . Веб-документы MDN . Мозилла.
- ^ «Документация Java SE для интерфейса java.io.DataInput, подраздел «Модифицированный UTF-8»» . Корпорация Оракл . 2015 . Проверено 30 апреля 2021 г.