我正在使用IntelliJ IDEA,尝试输出一个包含滑雪者U+26F7和一个跑步者U+1F3C3的unicode字符串,下面是我的代码:
System.out.println("\u26f7" + " " + "\u1f3c3");
只有滑雪者能正常显示。但是,IntelliJ会用不同的颜色显示最后3个运动员代码,表示存在问题。有什么解决方法吗?
我正在使用IntelliJ IDEA,尝试输出一个包含滑雪者U+26F7和一个跑步者U+1F3C3的unicode字符串,下面是我的代码:
System.out.println("\u26f7" + " " + "\u1f3c3");
只有滑雪者能正常显示。但是,IntelliJ会用不同的颜色显示最后3个运动员代码,表示存在问题。有什么解决方法吗?
Java使用utf16编码,因此字符\u1f3c3
超出了其范围。您可以使用其代理对传递该字符。
System.out.println("\u26f7" + " " + "\ud83c\udfc3")
Java的转义语法是在Unicode预计不超过216个字符时设计的,因此您必须在\u
后面指定确切的四个十六进制数字。不能多也不能少。
"\u1f3c3"
实际上是两个字符\u1f3c
和3
。
Java字符串始终处于UTF-16编码中。因此,一种选项是查找有关您的字符的详细信息(例如这里),并在字符串中使用相应的UTF-16值:0xD83C 0xDFC3 → "\uD83C\uDFC3"
另一种选项是在java.util.Formatter中使用%c
格式说明符。例如:
System.out.printf("%c %c%n", 0x26f7, 0x1f3c3);
(与println不同,printf不会打印换行符,除非您在格式中添加%n
。)