我想在我的应用程序的字符串中使用Emojis.当然,所有字符串都驻留在strings.xml中
问题是并非所有的Emojis都是16位友好的.一些Emojis可以表示为"普通"16位十六进制:'\ u26FF'但有些是32 位十六进制(UTF-16),通常表示为:'\ x1F600'.在代码中处理应用程序内部的内容时我没有问题.但strings.xml资源文件是UTF8编码的,并且不能正确处理非16位转义字符.
我尝试使用'\ x1F600' - 因为我看到'\ u26FF'工作正常.但它似乎不会吞噬'x'逃脱字符.它也不像正则表达式'\ x {1F600}'
所以我最终使用字符串占位符'%1 $ s'并在代码中填写表情符号,如下所示:
// 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中?