Дополнительная многоязычная плоскость Unicode в Java - PullRequest
7 голосов
/ 20 января 2010

Я хочу работать с SMP (дополнительная многоязычная плоскость) в Java. На самом деле, я хочу напечатать символ, кодовая точка которого больше 0xFFFF. Я использовал эту строку кода:

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

чтобы иметь кодовую точку специального символа. Но как я могу напечатать этот символ Unicode на консоли?

Заранее благодарю за помощь.

Ответы [ 2 ]

5 голосов
/ 20 января 2010
String s = new StringBuilder().append("Here is a codepoint: ").appendCodePoint(hexCodePoint).toString();
System.out.println(s);

Обратите внимание, что в Windows не будет получен ожидаемый результат из-за ограниченных возможностей Unicode консоли

РЕДАКТИРОВАТЬ: Или Character.toChars(hexCodePoint) для производства char[]

4 голосов
/ 20 января 2010
System.out.println("\uD801\uDC02");

Теперь то, действительно ли U + 10402 (& # x10402;) действительно появляется на консоли, зависит от:

  1. при преобразовании в кодировку System.out данные преобразуются в кодировку с потерями (например, кодовая страница Windows "ANSI" или MacRoman); см defaultCharset ()
  2. поддерживает ли консоль кодировку; System.out преобразует данные в (иногда это не значение по умолчанию для консолей Windows, которые используют старые сопоставления OEM)
  3. есть ли в консоли поддержка шрифтов для символа

Решения этих проблем будут зависеть от платформы.

...