Java中的Unicode补充多语言平面

时间:2010-01-20 18:45:47

标签: java unicode astral-plane

我想在Java中使用SMP(Supplementary Multilingual Plane)。实际上,我想打印一个代码点大于0xFFFF的字符。我使用了这行代码:

int hexCodePoint = Character.toCodePoint('\uD801', '\uDC02' );

获得特殊字符的代码点。但是如何将这个unicode字符打印到控制台?

提前感谢您的帮助。

2 个答案:

答案 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(?)是否真的出现在控制台上取决于:

  1. 编码System.out是否转换为将数据转换为有损编码(如Windows“ANSI”代码页或MacRoman);见defaultCharset()
  2. 控制台是否支持编码System.out将数据转换为(有时,这不是使用旧OEM映射的Windows控制台上的默认设置)
  3. 控制台是否具有角色的字体支持
  4. 这些问题的解决方案将针对特定平台。