Java 16位字符如何支持Unicode?

Java 16位字符如何支持Unicode?,java,unicode,Java,Unicode,JavasChar是16位的,但是Unicode有更多的字符-Java是如何处理的? 在计算技术中,UTF-16(16位 UCS/Unicode转换格式)是 可变长度字符编码 对于Unicode,能够对 整个Unicode指令集。这个 编码表单将每个字符映射到 16位字的序列。人物 被称为代码点和 16位字被称为代码单元。 对于Basic中的字符 多语言平面(BMP)生成的 编码是单个16位字。对于 其他平面中的字符 编码将产生一对 16位字,一起称为a 代理对。所有可能的代码 从U+0000到

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

在计算技术中,UTF-16(16位 UCS/Unicode转换格式)是 可变长度字符编码 对于Unicode,能够对 整个Unicode指令集。这个 编码表单将每个字符映射到 16位字的序列。人物 被称为代码点和 16位字被称为代码单元。 对于Basic中的字符 多语言平面(BMP)生成的 编码是单个16位字。对于 其他平面中的字符 编码将产生一对 16位字,一起称为a 代理对。所有可能的代码 从U+0000到U+10FFFF的积分, 除了代理代码点 U+D800–U+DFFF(不是 字符),通过 UTF-16,不考虑代码点的 当前或将来的字符分配 或使用


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

Java字符串是UTF-16(大端),因此Unicode代码点可以是一个或两个字符。在这种编码方式下,Java可以使用字符
0xD835 0xDD0A
(字符串文字
“\uD835\uDD0A”
)表示代码点U+1D50A(数学FRAKTUR大写G)。该类提供与代码点之间的转换方法

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

关于如何正确迭代Java字符串中的所有字符,请参见我在SO中的上一个答案。为什么我们不使用
int
type
math\u fraktur\u cap\u g
来读取非BMP的代理项对?如上所述