Дополнительная многоязычная плоскость 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 (𐐂) появляется на консоли, зависит от:
- ли кодировка
System.out
преобразование в преобразует данные в кодировку с потерями (например, кодовая страница Windows "ANSI" или MacRoman); смотрите defaultCharset() - поддерживает ли консоль кодировку
System.out
преобразовывает данные в (иногда это не по умолчанию на консолях Windows, которые используют старые сопоставления OEM) - есть ли в консоли поддержка шрифтов для персонажа
Решения этих проблем будут зависеть от платформы.