char中的Unicode比U +中的U + FFFF多吗?

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代码点).当然,您需要显示数据的任何内容来应对它...


Tra*_*ers 8

除了使用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