Java UTF-16编码代码

ski*_*fun 2 java encoding utf-16 utf character-encoding

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

return new char[] { (char) codePoint };
Run Code Online (Sandbox Code Playgroud)

这只是从整数值到char的转换.

我想知道这个演员是如何实际完成的,这个演员背后的代码是为了从一个整数值转换为一个用UTF-16编码的字符.我尝试在java源代码上寻找它,但没有运气.

McD*_*ell 9

我不确定你在说什么功能.

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

  • `char`表示的所有数字都是有效的代码点,但并非所有数字都是有效的标量值.(标量值是不是代理代码点的代码点.)因此,并非所有`char`值都是标量值,并且并非所有可能的`char`序列都是UTF-16字符串.但是,`Character.toChars`不会检查参数是否是有效的标量值. (2认同)