我正在使用IntelliJ IDEA,并且试图为滑雪者 U + 26F7 和跑步者 U + 1F3C3 打印具有Unicode的string
使用以下代码:
System.out.println("\u26f7" + " " + "\u1f3c3");
只有滑雪者才能正确显示。但是,IntelliJ确实以不同的颜色显示了运行程序代码的后3个,表明存在问题。有关如何解决此问题的任何想法?
答案 0 :(得分:0)
Java使用utf16,因此字符\u1f3c3
不在其范围内。您可以使用它的替代配对来传递角色
System.out.println("\u26f7" + " " + "\ud83c\udfc3")
答案 1 :(得分:0)
Java的转义语法是在Unicode预期不超过2个 16 字符的情况下设计的,因此必须在\u
处指定正好四个十六进制数字。不多不少。
"\u1f3c3"
实际上是两个字符\u1f3c
和3
。
Java字符串在UTF-16中总是 。因此,一种选择是查找有关字符的详细信息(例如here),并在字符串中使用相应的UTF-16值:0xD83C 0xDFC3→"\uD83C\uDFC3"
另一个选择是使用java.util.Formatter中的%c
说明符。例如:
System.out.printf("%c %c%n", 0x26f7, 0x1f3c3);
(与println不同,除非在格式中添加%n
,否则printf不会打印换行符。)