Java 16位字符如何支持Unicode?

时间:2009-12-21 17:56:45

标签: java unicode

Javas char是16位,但Unicode有更多的字符--Java是如何处理的?

3 个答案:

答案 0 :(得分:13)

http://en.wikipedia.org/wiki/UTF-16

  

在计算中,UTF-16(16位   UCS / Unicode转换格式)是   可变长度字符编码   对于Unicode,能够编码   整个Unicode保留节目。该   编码表单将每个字符映射到a   16位字序列。人物   被称为代码点和   16位字称为代码单元。   对于Basic中的字符   由此产生的多语​​言平面(BMP)   编码是一个16位字。对于   在其他平面上的人物,   编码将导致一对   16位字,一起叫做a   代理对。所有可能的代码   点从U + 0000到U + 10FFFF,   代理代码点除外   U + D800-U + DFFF(不是   字符),由唯一映射   UTF-16无论代码点如何   当前或未来的角色分配   或者使用。

答案 1 :(得分:8)

Java字符串是UTF-16(大端),因此Unicode代码点可以是一个或两个字符。在此编码下,Java可以使用字符0xD835 0xDD0A(字符串文字"\uD835\uDD0A")表示代码点U + 1D50A( MATHEMATICAL FRAKTUR CAPITAL G )。 Character类提供了转换为/从代码点转换的方法。

// Unicode code point to char array
char[] math_fraktur_cap_g = Character.toChars(0x1D50A);

答案 2 :(得分:3)

Java对字符串使用UTF-16 - 基本上意味着字符是可变宽度。它们中的大多数适合16位,但基本多语言窗格之外的那些占用32位。它与UTF-8方案非常相似。