liu*_*ing 13 java unicode utf-8 astral-plane
如何在Java中使用char显示U + FFFF上方的Unicode字符?
我需要这样的东西(如果它是有效的):
char u = '\u+10FFFF';
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 21
您不能使用单个char(包含UTF-16代码单元)来执行此操作,但您可以使用String:
// This represents U+10FFFF
String x = "\udbff\udfff";
Run Code Online (Sandbox Code Playgroud)
或者:
String y = new StringBuilder().appendCodePoint(0x10ffff).toString();
Run Code Online (Sandbox Code Playgroud)
这是一个代理对(两个UTF-16代码单元组合形成一个超出基本多语言平面的单个Unicode代码点).当然,您需要显示数据的任何内容来应对它...
除了使用StringBuilder,您还可以使用直接在Character类中找到的函数。该功能是
toChars(),它具有以下规格:
将指定的字符(Unicode 代码点)转换
为其存储在char数组中的UTF-16 表示。
所以你不需要确切地知道代理对的样子,你可以直接使用代码点。示例代码如下所示:
int ch = 0x10FFFF;
String s = new String(Character.toChars(ch));
Run Code Online (Sandbox Code Playgroud)
请注意,代码点的数据类型是int而不是char。