2016-07-14 77 views
1

我正在阅读类Character的文档。该文档提及替代范围。 什么是代理代码? 代用方法如isSurrogate()isSurrogatePair()isLowSurrogate(),isHighSurrogate()的用途是什么。什么是Java中的代理范围和代理代码?

+1

http://www.unicode.org/versions/Unicode7.0.0/ch03.pdf#G2630 – Andrew

+0

Unicode符号,_code points_,3字节范围内的数字和2字节字符的UTF-16使用这样的一对字符以安全的方式达到完整的Unicode范围。 “代孕” –

回答

2

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

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

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

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

欲了解更多信息,请阅读关于UTF-16的维基百科文章。


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

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

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


是什么样子的isSurrogate()isSurrogatePair()isLowSurrogate()isHighSurrogate()使用的替代方法。

  • isSurrogate()测试如果char可以是一个低的或高代理
  • isSurrogatePair()测试如果一对char值是否是合法的代理对
  • isLowSurrogate()测试如果char是一个低代理值
  • isHighSurrogate()测试char是否是高代理值

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


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