我正在使用IntelliJ IDEA,我试图使用以下代码打印一个string
,该具有滑雪者U +26F7和跑步者U + 1F3C3的Unicode:
System.out.println("u26f7" + " " + "u1f3c3");
只有滑雪者才能正确显示。但是,IntelliJ 确实以不同的颜色显示运行器代码的最后 3 个,表明存在问题。关于如何解决这个问题的任何想法?
Java 的转义语法是在 Unicode 预计不超过 216个字符时设计的,因此您必须在u
处指定四个十六进制数字。 不多也不少。
"u1f3c3"
其实是u1f3c
和3
两个角色。
Java 字符串始终采用 UTF-16。 因此,一种选择是查找字符的详细信息(例如,此处(,并在字符串中使用相应的 UTF-16 值:0xD83C 0xDFC3 →"uD83CuDFC3"
另一种选择是在java.util.Formatter中使用%c
说明符。 例如:
System.out.printf("%c %c%n", 0x26f7, 0x1f3c3);
(与 println 不同,printf 不会打印换行符,除非您在格式中添加%n
。
Java 使用 utf16,因此字符u1f3c3
超出其范围。您可以使用它的超额对传入角色
System.out.println("u26f7" + " " + "ud83cudfc3")