gpt4 book ai didi

android - 如何将 utf-16 字符放入 Android 字符串资源中?

转载 作者:可可西里 更新时间:2023-11-01 19:06:47 25 4
gpt4 key购买 nike

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

问题是并不是所有的表情符号都是 16 位友好的。有些 Emoji 可以表示为“正常”的 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 的正确方法?

最佳答案

But the strings.xml resource file is UTF8

如果是UTF-8编码的,可以直接放表情包。但随后您冒着被您的编辑器或其他软件破坏它们的风险。

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

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

😜 → U+1F600 → "\uD83D\uDE00"

关于android - 如何将 utf-16 字符放入 Android 字符串资源中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24852806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com