Java UTF-16 编码中的代理对
当处理具有超出UTF-16 中使用的 16 位代码单元的范围
什么是代理对?
在 UTF-16 中,代理对是两个代码单元的组合,这两个代码单元一起表示单个代码点。当一个字符无法用单个 16 位代码单元进行编码时,其表示如下:
高代理项表示代码点的前半部分,而低代理项表示代码点的后半部分。它们一起形成一个 32 位代码点。
编码和解码
将超过 U FFFF 的代码点编码为代理对的过程如下:
从代码点中减去 0x10000 即可得到高代理项值。
将高代理值右移 10 位。
将 U D800 添加到高代理值,以获得高代理代码单元。
取代码点的剩余 10 位以获得低代理值代理值。
将 U DC00 添加到低代理值以获得低代理代码单位。
从代理对解码代码点涉及相反的过程。
示例
考虑 Unicode 字符 U 10400,它表示特点 ?。将此字符编码为代理对:
从 U 10400 中减去 0x10000:0x400
将 0x400 右移 10 位:0x4
将 U D800 添加到 0x4:U D804(高代理代码单元)
添加 U DC00 至0x3C0:U DC00(低代理代码单元)
字符 U 10400 现在由代理对 U D804 U DC00 表示。
以上是Java UTF-16 编码中的代理对是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!