java - 什么是 Java 中的代理项范围和代理项代码?

标签 java string class

我正在阅读类 Character 的文档。该文档提到了一些关于替代范围 的内容。 代理代码是什么? isSurrogate()isSurrogatePair()isLowSurrogate()isHighSurrogate() 等代理方法有什么用>.

最佳答案

代理对是在 UTF-16 中使用的一对 16 位值,用于对 BMP/平面 0 之外的 Unicode 代码点进行编码;即任何大于 65535 的 Unicode 代码点。

代理范围是一对中的两个值所来自的16位值的范围;

  • 代理对的高值来自 D800 到 DBFF 的范围
  • 代理对的低值来自 DC00 到 DFFF 的范围。

例如:Unicode 代码点 U+10437 在 UTF-16 中表示为代理项对 D801 DC37。

有关更多信息,请阅读关于 UTF-16 的维基百科文章.


What is a surrogate range and surrogate code in Java?

上面描述了两个替代范围。

代理代码是两个代理范围之一中的代码1


What is the use of surrogate methods like isSurrogate(), isSurrogatePair(), isLowSurrogate(), isHighSurrogate().

  • isSurrogate() 测试 char 是低代理还是高代理
  • isSurrogatePair() 测试一对 char 值是否是有效的代理对
  • isLowSurrogate() 测试 char 是否为低代理值
  • isHighSurrogate() 测试 char 是否为高代理值

这些方法的使用是不言而喻的。在将 UTF-16 代码单元解释为 Unicode 代码点时,它们用于测试 char 值。


1 - 这可以是代码单元或代码点,具体取决于上下文。如果您有一个构成 UTF-16 字符串的 16 位代码单元序列,那么这些就是代码单元。另一方面,如果您有一系列 Unicode 代码点,那么如果您在该序列中遇到高位和低位代理项,它们就是代码点。但是,代理代码点在该上下文中作为文本没有意义。

关于java - 什么是 Java 中的代理项范围和代理项代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38373806/

相关文章:

java - Java中字符串定界程序中的差一错误

Java while 循环嵌套在for 循环中。

java - Java 中 i +"abc"的类型

javascript - 如何使用 REGEX 替换 JavaScript 中字符串中的标记

python - Biopython 类实例 - Entrez.read : I don't know how to manipulate the output 的输出

python - 如何更新类实例的历史字典属性并保持顺序?

java - 如何在 netbeans 中使用 choice.showOpenDialog(parent) ?

java - 如何使用 Swingworker 重新绘制多个图像

string - 在 Rust 中返回不可变字符串

java - 如何在 Java 中创建一个简单的 4x3 二维数组?