Как я могу поместить символы utf-16 в текстовый ресурс Android?

Я хочу использовать Emojis в строках моего приложения. Все строки находятся, конечно, в strings.xml

Проблема в том, что не все Emojis дружелюбны на 16 бит. Некоторые Emojis могут быть представлены как «обычные» 16-битные hex: '\ u26FF', но некоторые из них – 32-битные гексы (UTF-16), обычно представляемые как: '\ x1F600' . У меня нет проблем с теми, кто находится внутри приложения, в коде. Но файл ресурсов strings.xml кодируется в кодировке UTF8 и не обрабатывает правильные символы с 16-разрядными escape-символами.

Я попытался использовать '\ x1F600' – потому что я видел, что «\ u26FF» работает отлично. Но, похоже, он не поглощает символ «х». Также ему не нравилось обозначение регулярного выражения '\ x {1F600}'

Таким образом, я закончил использование строкового заполнителя «% 1 $ s» и заполнил код Emoji следующим образом:

// greeting_3 is defined as: "hello there %1$s!" String s = context.getString(R.string.greeting_3, "😜"); // OR: String s = context.getString(R.string.greeting_3, new String(Character.toChars(0x1F61C))); 

Это не очень изящное решение … есть ли способ разместить 32-битные символы UTF-8 в файле strings.xml?

Solutions Collecting From Web of "Как я могу поместить символы utf-16 в текстовый ресурс Android?"

Но файл ресурсов strings.xml – UTF8

Если кодировка UTF-8 закодирована, вы можете напрямую разместить свои эмоции. Но тогда вы рискуете, что ваш редактор или другое программное обеспечение уничтожит их.

Если вы помещаете их в XML, вы можете попробовать использовать XML-объекты: 😀 , Я не уверен, насколько хорошо Android поддерживает их.

Вы также можете использовать суррогатные пары: конвертировать emoji в UTF-16 и использовать стандартный \u escape. Вы можете, например, проверить эту страницу, она даже сообщает вам, как создать строку litaral в Java: http://www.fileformat.info/info/unicode/char/1F600/index.htm

😜 → U + 1F600 → "\uD83D\uDE00"

Я предполагаю, что вы развиваете нечто вроде Emoji Keyboard. #EmojiCodeSheet может помочь вам в этом

#EmojiCodeSheet

Ссылка на проект: https://github.com/shanraisshan/EmojiCodeSheet


Любые emoji могут быть представлены в 2 разных формах

  1. элемент кода
  2. строка

Например: SMILING_FACE_WITH_SUN_GLASS Emoji

  1. Кодовая точка: 0x1f60e
  2. Строка: 😎 (которая имеет значение \ uD83D \ uDE0E )

Вы можете легко отображать emojis в Android, либо сохраняя их в xml, либо в java, список приведен ниже

  1. XML как strings.xml
  2. Как статическая константа в файлах JAVA

Вам просто нужно заменить эти emoji-коды на emoji-изображения в вашем приложении Android, выполнив несколько строк кода.