2

在java中将Unicode代码点(整数)编码为char数组(字节)的函数基本上是这样的:

return new char[] { (char) codePoint };

这只是从整数值到字符的转换。

我想知道这种转换实际上是如何完成的,该转换背后的代码用于将整数值转换为以 UTF-16 编码的字符。我尝试在 java 源代码上寻找它,但没有运气。

4

5 回答 5

9

我不确定你说的是哪个功能。

由于 UTF-16 的定义方式,将有效int代码点转换为将适用于基本多语言平面中的代码点。char要转换 U+FFFF 以上的任何内容,您应该使用Character.toChars(int)转换为 UTF-16 代码单元。该算法在RFC 2781中定义。

于 2011-05-03T20:33:42.453 回答
0

代码点只是一个映射到字符的数字,没有真正的转换。Unicode 代码点以十六进制指定,因此无论您使用十六进制的 codePoint 都将映射到该字符(或字形)。

于 2011-05-03T20:26:50.597 回答
0

由于 achar被定义为在 Java 中保存 UTF-16 数据,这就是它的全部内容。只有当输入是一个int(即它可以表示 U+10000 或更大的 Unicode 代码点)时,才需要进行一些计算。所有char值都已经是 UTF-16。

于 2011-05-03T20:28:11.163 回答
0

charJava 中的所有s 在内部都以 UTF-16 表示。这只是将整数值映射到 that char

于 2011-05-03T20:28:46.140 回答
0

此外,在 Java 平台中,char 数组已经是 UTF-16。

于 2011-05-03T20:29:05.850 回答