我想在Java中使用SMP(Supplementary Multilingual Plane)。实际上,我想打印一个代码点大于0xFFFF的字符。我使用了这行代码:
int hexCodePoint = Character.toCodePoint('\uD801', '\uDC02' );
获得特殊字符的代码点。但是如何将这个unicode字符打印到控制台?
提前感谢您的帮助。
答案 0 :(得分:5)
String s = new StringBuilder().append("Here is a codepoint: ").appendCodePoint(hexCodePoint).toString();
System.out.println(s);
请注意,在Windows中,由于控制台的Unicode功能有限,它不会产生预期的输出
编辑:或Character.toChars(hexCodePoint)
生成char[]
答案 1 :(得分:4)
System.out.println("\uD801\uDC02");
现在,U + 10402(?)是否真的出现在控制台上取决于:
System.out
是否转换为将数据转换为有损编码(如Windows“ANSI”代码页或MacRoman);见defaultCharset() System.out
将数据转换为(有时,这不是使用旧OEM映射的Windows控制台上的默认设置)这些问题的解决方案将针对特定平台。