2017-01-10 4 views
0

В спецификации JVM, в the description of the modified UTF-8, он утверждает формат v для «формата два раза-три байт»:Формата V в JVM модифицированного UTF-8

Это означает, что дополнительные символы представлены шестью байтами, u, v, w, x, y и z

Таблица 4.14. v: 1010 (биты 20-16) -1

С v 8 бит, это означает, что (bits 20-16)-1 должен быть 4 бита. Как может -1 сжать bits 20-26 от 5 до 4 бит?

(Дополнительный вопрос: есть ли основания говорить о «двух раз-три байта», а не «шесть байт»?)

ответ

1

Unicode code points варьировались от U+0000 до U+10FFFF.

Значения, превышающие U+FFFF, называются дополнительные кодовые пункты. Их двоичное представление - uuuuuxxxxxxxxxxxxxxxx (21 бит), где uuuuu находится между 00001 и 10000.

В дополнительных кодовых точках UTF-16 кодируются surrogate pairs, как описано в 3.9 Unicode Encoding Forms, D91. То есть uuuuuxxxxxxxxxxxxxxxx представлен двумя 16-битными символами:
110110wwwwxxxxxx 110111xxxxxxxxxx, где wwww = uuuuu - 1.

00001 ≤ uuuuu ≤ 10000, поэтому 0000 ≤ wwww ≤ 1111

Теперь, модифицированный UTF-8 кодирует дополнительные кодовые точки, как если бы они были два символа: высокий и низкий суррогат суррогат. Каждый из этих суррогатных символов представлен 3 байтами в UTF-8. Следовательно, 'два раза-три' рисунок.

 Смежные вопросы

  • Нет связанных вопросов^_^