首页 >Java >java教程 >Java UTF-16 编码中的代理对是什么?

Java UTF-16 编码中的代理对是什么?

Linda Hamilton
Linda Hamilton原创
2024-12-05 10:12:111025浏览

What are Surrogate Pairs in Java's UTF-16 Encoding?

Java UTF-16 编码中的代理对

当处理具有超出UTF-16 中使用的 16 位代码单元的范围

什么是代理对?

在 UTF-16 中,代理对是两个代码单元的组合,这两个代码单元一起表示单个代码点。当一个字符无法用单个 16 位代码单元进行编码时,其表示如下:

  • 在该对的开头使用高位代理代码单元,范围为 U D800到 U DBFF。
  • 低代理代码单元跟在高代理代码后面,范围为 U DC00 到 U DFFF.

高代理项表示代码点的前半部分,而低代理项表示代码点的后半部分。它们一起形成一个 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn