Sho*_*ham 15 xml string android utf-8 emoji
我想在我的应用程序的字符串中使用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中?
Kar*_*l S 10
但strings.xml资源文件是UTF8
如果是UTF-8编码,您可以直接放置表情符号.但是,你冒着编辑器或其他软件破坏它们的风险.
如果你把它们放在XML中,你可以尝试使用XML实体:😀
我不确定Android支持它们的程度.
您还可以使用代理项对:将表情符号转换为UTF-16并使用标准\u
转义.例如,您可以查看此页面,它甚至会告诉您如何在Java中创建字符串litaral:http://www.fileformat.info/info/unicode/char/1F600/index.htm
→U + 1F600→ "\uD83D\uDE00"
归档时间: |
|
查看次数: |
13166 次 |
最近记录: |