我希望在我的应用程序字符串中使用表情符号。所有字符串都存储在strings.xml文件中。
问题在于,并非所有表情符号都适用于16位。有些表情符号可以表示为“普通”的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中?
String grinningFaceEmoji = "\uD83D\uDE00";
- Mr-IDE