【问题标题】:What is a surrogate range and surrogate code in Java?Java中的代理范围和代理代码是什么?
【发布时间】:2016-11-17 08:20:18
【问题描述】:

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

【问题讨论】:

标签: java string class


【解决方案1】:

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

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

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

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

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


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

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

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


isSurrogate()isSurrogatePair()isLowSurrogate()isHighSurrogate() 等代理方法有什么用。

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

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


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-19
    • 2011-07-03
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多