JVM修改的UTF-8中v的格式

时间:2017-01-10 01:21:42

标签: java utf-8 jvm

在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位?

(补充问题:有没有理由说"两次三字节"而不是"六字节"?)

1 个答案:

答案 0 :(得分:1)

Unicode code points的范围从U+0000U+10FFFF

大于U+FFFF的值称为补充代码点。它们的二进制表示为uuuuuxxxxxxxxxxxxxxxx(21位),uuuuu位于0000110000之间。

在UTF-16中,补充代码点由surrogate pairs编码,如3.9 Unicode Encoding Forms, D91中所述。也就是说,uuuuuxxxxxxxxxxxxxxxx由两个16位字符表示:
110110wwwwxxxxxx 110111xxxxxxxxxx,其中wwww = uuuuu - 1

00001 ≤ uuuuu ≤ 100000000 ≤ wwww ≤ 1111

现在,修改后的UTF-8将补充代码点编码为两个字符:高代理和低代理。这些代理字符中的每一个都由UTF-8中的3个字节表示。因此'两次三'数字。