Я хочу использовать Emojis в своих строках приложения. Все строки находятся, конечно, в strings.xml
Проблема в том, что не все Emojis дружелюбны на 16 бит. Некоторые Emojis могут быть представлены как "нормальные" 16-разрядные hex: '\ u26FF', но некоторые из них - 32-разрядные гексы (UTF-16), обычно представляемые как: '\ x1F600'. У меня нет проблем с теми, кто находится внутри приложения, в коде. Но файл ресурсов strings.xml кодируется в кодировке UTF8 и не обрабатывает правильные символы не 16 бит.
Я попытался использовать '\ x1F600', потому что видел, что '\ u26FF' работает отлично. Но, похоже, он не поглощает "x" escape char. Также ему не нравилось обозначение регулярного выражения '\ 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?