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

 望尽天涯 发布于 2023-01-02 07:04

我想在我的应用程序的字符串中使用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中?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有