Представление u1F000 в виде строки Java - PullRequest
0 голосов
/ 04 января 2009

У меня есть куча символов Юникода от U1F000 и выше, и мне интересно, как представить их в Java. Java Unicode escape находится в форме "\ uXXXX", а спецификация языка Java гласит, что "Для представления дополнительных символов требуется два последовательных escape-кода Unicode". Как это относится к U1F000?

String mahjongTile = "\u0001\uf000";

Кажется, не работает (я получаю только два пустых квадрата), но я полагаю, что это может быть сбой шрифта.

Ответы [ 2 ]

3 голосов
/ 05 января 2009

Ответ Джона должен работать, но вы также можете использовать метод appendCodePoint в StringBuilder или StringBuffer.

StringBuilder sb = new StringBuilder();
sb.appendCodePoint(0x1f000);

Оба метода делают преобразование в суррогатные пары для вас.

Похоже, ваша проблема в том, чтобы символы правильно отображались. Если вы пытаетесь отобразить их на консоли, забудьте об этом; консоль на большинстве машин слишком ограничена. Я предлагаю вам либо записать свой вывод в файл и использовать хороший текстовый редактор, чтобы прочитать его, либо отобразить вывод в компоненте Swing, например JTextPane.

1 голос
/ 04 января 2009

Вам нужно будет найти подходящую суррогатную пару, если вы хотите, чтобы она была в строковом литерале. (В C # вы можете написать «\ U0001f000» - \ u используется для BMP, а \ U для полного Unicode.)

В Java вы можете сделать:

String foo = new String(new int[]{0x1f000}, 0, 1);

если вы все еще хотели увидеть его "1f000". Признаюсь, я не могу вспомнить высокие / низкие суррогатные диапазоны от макушки головы: (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...