Представление u1F000 в виде строки Java

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

String mahjongTile = "\u0001\uf000";

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

Очевидно, у вас должен быть шрифт, поддерживающий глифы, которые вам нужно отобразить. Здесь может помочь такой инструмент, как BabelMap.

PhiLho 05.01.2009 01:54
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
1 733
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

В Java вы могли:

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

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

Хм. Я все еще получаю два пустых квадрата. Полагаю, мне понадобится специальный шрифт, чтобы плитки Маджонга отображались правильно.

JesperE 04.01.2009 23:41

В каком шрифте вы пытаетесь их отобразить и в каком элементе управления пользовательского интерфейса?

Jon Skeet 04.01.2009 23:47
Ответ принят как подходящий

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

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

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

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

Я думаю, что в настоящее время я вывожу его в представление списка SWT (я использую скелет кода, созданный Eclipse, и у меня нет кода для проверки).

JesperE 05.01.2009 12:17

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