小编Sho*_*ham的帖子

如何在Android字符串资源中添加utf-16字符?

我想在我的应用程序的字符串中使用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)));
Run Code Online (Sandbox Code Playgroud)

这不是一个非常优雅的解决方案...有没有一种正确的方法将32位UTF-8字符放在strings.xml中?

xml string android utf-8 emoji

15
推荐指数
1
解决办法
1万
查看次数

标签 统计

android ×1

emoji ×1

string ×1

utf-8 ×1

xml ×1