Дополнительная многоязычная плоскость Unicode в Java

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

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

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

Спасибо заранее за вашу помощь.

2 ответа

String s = new StringBuilder().append("Here is a codepoint: ").appendCodePoint(hexCodePoint).toString();
System.out.println(s);

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

Редактор Character.toChars(hexCodePoint) производить char[]

System.out.println("\uD801\uDC02");

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

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

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

Другие вопросы по тегам