如何在Android字符串资源中放入utf-16字符? [英] How can I put utf-16 characters in Android string resource?

查看:0
本文介绍了如何在Android字符串资源中放入utf-16字符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的应用程序字符串中使用表情符号。当然,所有字符串都驻留在strings.xml中

问题是,并不是所有的表情符号都是16位友好的。有些表情符号可以表示为"Normal"16位十六进制:‘u26FF’,但有些是32位十六进制(UTF-16),通常表示为:‘x1F600’。我可以用代码与应用程序内部的人打交道。但是字符串.xml资源文件是UTF8编码的,并且不能正确处理非16位转义字符。

我尝试使用‘x1F600’--因为我发现‘u26FF’运行良好。但它似乎没有吃掉‘x’转义字符。它也不喜欢regexp符号‘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中?

推荐答案

但字符串.xml资源文件为UTF8

如果它是UTF-8编码的,你可以直接放入你的表情符号。但随后您可能会冒着被您的编辑人员或其他软件破坏的风险。

如果您将它们放在XML中,您可以尝试使用XML实体:😀,但我不确定Android对它们的支持程度。

您还可以使用代理项对:将emoji转换为UTF-16并使用标准u转义。例如,您可以查看此页面,它甚至告诉您如何在Java中创建字符串字母:http://www.fileformat.info/info/unicode/char/1F600/index.htm

😜→U+1F600→"uD83DuDE00"

这篇关于如何在Android字符串资源中放入utf-16字符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆