在JVM规范的invoice item中,它为"两倍三字节格式"表示格式v
:
这意味着补充字符由六个字节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位?
(补充问题:有没有理由说"两次三字节"而不是"六字节"?)
答案 0 :(得分: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将补充代码点编码为两个字符:高代理和低代理。这些代理字符中的每一个都由UTF-8中的3个字节表示。因此'两次三'数字。