在JVM规范中,在改进的UTF-8的描述中,它说明了“两次三字节格式”的v格式:
这意味着补充字符由6个字节表示,u,v,w,x,y和z。 表4.14.五: 1010 (第20至16条)-1
因为v是8位,这意味着(bits 20-16)-1必须是4位。-1如何将bits 20-26从5位缩小到4位?
(补充质询:是否有理由说“两倍三字节”而不是“六字节”?)
发布于 2017-01-11 01:07:15
Unicode码点从U+0000到U+10FFFF不等。
大于U+FFFF的值称为补充代码点。它们的二进制表示形式是uuuuuxxxxxxxxxxxxxxxx (21位),其中uuuuu位于00001和10000之间。
在UTF-16中,补充码点由代理对编码,如3.9Unicode编码表单,D91所述。也就是说,uuuuuxxxxxxxxxxxxxxxx由两个16位字符表示:
110110wwwwxxxxxx 110111xxxxxxxxxx,在那里wwww = uuuuu - 1。
因此,00001 ≤ uuuuu ≤ 10000,0000 ≤ wwww ≤ 1111
现在,修改后的UTF-8编码补充代码点,就好像它们是两个字符:高代理项和低代理项.这些代理字符中的每一个都以UTF-8中的3个字节表示.因此“二乘三”的数字。
https://stackoverflow.com/questions/41559727
复制相似问题