在java中将Unicode代码点(整数)编码为char数组(Bytes)的函数基本上是这样的:
return new char[] { (char) codePoint };
这只是从整数值到char的转换。
我想知道这个演员是如何实际完成的,这个演员背后的代码是为了从一个整数值转换为一个用UTF-16编码的字符。我尝试在java源代码上查找它,但没有运气。
答案 0 :(得分:9)
我不确定你在说什么功能。
将有效int
代码点投射到char
将适用于基本多语言平面中的代码点,这仅仅是因为定义了UTF-16。要转换U + FFFF以上的任何内容,您应该使用Character.toChars(int)转换为UTF-16代码单元。该算法在RFC 2781中定义。
答案 1 :(得分:0)
代码点只是一个映射到一个字符的数字,没有真正的转换。 Unicode代码点以十六进制指定,因此无论codePoint是否为十六进制,都将映射到该字符(或字形)。
答案 2 :(得分:0)
由于char
被定义为用Java保存UTF-16数据,所以这就是它的全部内容。 仅如果输入是int
(即它可以表示U + 10000或更高的Unicode代码点),则需要进行一些计算。所有char
值都已经是UTF-16。
答案 3 :(得分:0)
Java中的所有char
都在内部用UTF-16表示。这只是将整数值映射到char
。
答案 4 :(得分:0)
此外,char数组在Java平台中已经是UTF-16了。