在java中,char到Unicode比U + FFFF更多?

2022-09-03 10:09:14

如何在Java中使用char在U + FFFF上方显示Unicode字符?

我需要这样的东西(如果它有效):

char u = '\u+10FFFF';

答案 1

你不能用一个(它包含一个UTF-16代码单元)来做到这一点,但你可以使用:charString

// This represents U+10FFFF
String x = "\udbff\udfff";

或者:

String y = new StringBuilder().appendCodePoint(0x10ffff).toString();

这是一个代理项对(两个 UTF-16 代码单元组合在一起,形成一个超出基本多语言平面的 Unicode 代码点)。当然,您也需要任何要显示数据的东西来应对它......


答案 2

除了使用 之外,您还可以使用类中直接找到的函数。该函数是并且具有以下规格:StringBuilderCharactertoChars()

将指定的字符(Unicode 码位)转换为
存储在数组中的 UTF-16 表示形式。char

因此,您无需确切知道代理项对的外观,即可直接使用代码点。然后,示例代码如下所示:

int ch = 0x10FFFF;
String s = new String(Character.toChars(ch));

请注意,代码点的数据类型是 int 而不是 char


推荐