<分区>
我正在使用 IntelliJ IDEA,我正在尝试打印一个 string
,它具有用于滑雪者 U+26F7 和运行者 U+1F3C3< 的 unicode/strong> 使用以下代码:
System.out.println("\u26f7" + " " + "\u1f3c3");
只有滑雪者才能正确显示。但是,IntelliJ 确实以不同颜色显示了最后 3 个运行程序代码,表明存在问题。关于如何解决此问题的任何想法?
<分区>
我正在使用 IntelliJ IDEA,我正在尝试打印一个 string
,它具有用于滑雪者 U+26F7 和运行者 U+1F3C3< 的 unicode/strong> 使用以下代码:
System.out.println("\u26f7" + " " + "\u1f3c3");
只有滑雪者才能正确显示。但是,IntelliJ 确实以不同颜色显示了最后 3 个运行程序代码,表明存在问题。关于如何解决此问题的任何想法?
最佳答案
Java 的转义语法是在 Unicode 不超过 216 个字符时设计的,因此您必须在 \u
之后指定恰好四个十六进制数字。不多也不少。
"\u1f3c3"
其实就是\u1f3c
和3
这两个字符。
Java 字符串总是采用UTF-16。因此,一种选择是查找您的角色的详细信息(例如,here)并在您的字符串中使用相应的 UTF-16 值:0xD83C 0xDFC3 → "\uD83C\uDFC3"
/p>
另一种选择是在 java.util.Formatter 中使用 %c
说明符.例如:
System.out.printf("%c %c%n", 0x26f7, 0x1f3c3);
(与 println 不同,除非您将 %n
添加到格式中,否则 printf 不会打印换行符。)
关于java - 为什么 Java 不能在字符串中正确显示 unicode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52224923/