如何在字符串文本中放入补充Unicode字符?

2022-09-01 16:07:05

如何在字符串文本中放置一个补充Unicode字符(例如,代码点10400)?我尝试过像这样放置一个代理项对:

String text = "TEST \uD801\uDC00";
System.out.println(text);

但它似乎不起作用。

更新:

好消息是,字符串构造正确。
UTF-8 格式的字节数组:54 45 53 54 20 f0 90 90 80
UTF-16 中的字节数组:fe ff 0 54 0 45 0 53 0 54 0 20 d8 1 dc 0

但坏消息是,它没有正确打印(在我的Fedora框中),我可以看到一个正方形而不是预期的符号(我的控制台没有正确支持unicode)。


答案 1

“为我工作”,问题到底是什么?

public static void main (String[] args) throws Exception {
    int cp = 0x10400;
    String text = "test \uD801\uDC00";
    System.out.println("cp:    " + cp);
    System.out.println("found: " + text.codePointAt(5));
    System.out.println("len:   " + text.length());
}

输出:

cp:    66560
found: 66560
len:   7

请注意,与大多数 String 方法一样,长度处理的是 s,而不是 Unicode 字符。这么多真棒Unicode支持:)char

快乐编码。


答案 2

它应该使用:

System.out.println(
    "text = " + new String(Character.toChars(h))
);

但输出是:

text = ?

推荐