2016-07-14 41 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代碼點,那麼如果你遇到這個序列中的高和低代理代碼,它們將是代碼點。然而,替代碼點在這種情況下作爲文本沒有意義。