Java 16位字符如何支持Unicode?

lee*_*roy 7 java unicode

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

Amb*_*ber 13

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

在计算中,UTF-16(16位UCS/Unicode转换格式)是Unicode的可变长度字符编码,能够编码整个Unicode指令表.编码形式将每个字符映射到16位字的序列.字符称为代码点,16位字称为代码单元.对于基本多语言平面(BMP)中的字符,生成的编码是单个16位字.对于其他平面中的字符,编码将产生一对16位字,一起称为代理对.除了代理代码点U + D800-U + DFFF(不是字符)之外,U + 0000到U + 10FFFF的所有可能代码点都由UTF-16唯一映射,无论代码点的当前或未来字符分配如何或使用.


McD*_*ell 8

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

// Unicode code point to char array
char[] math_fraktur_cap_g = Character.toChars(0x1D50A);
Run Code Online (Sandbox Code Playgroud)