Android - 我什么时候应该在 Strings.xml 资源文件中转义 unicode?

问题描述

根据文档,unicode 字符应在 strings.xml 文件中与 \u 前缀一起使用。例如使用 \u00a9 而不是 ©

<string name="copyright_text">copyrighted ©</string>

但是,如果我直接写 ©,它似乎即使在 API 21 中也能正常工作。除了其他更有影响力的字符(例如 ash &、 等)之外,是否真的需要转义其他任何场景?

解决方法

我没有明确的权威可以指出,但根据我自己的个人经验,我发现使用 \u 符号的唯一原因是角色在视觉上不明确。例如,我使用 \u2013 而不是实际的破折号字符 "–",因为字形在视觉上与标准连字符 "-" 非常相似。另一种常见情况是使用 \u00a0 而不是实际的不间断空格字符。

据我所知,没有技术上的理由不在字符串文件中使用 unicode 字符,只要文件本身使用支持它们的字符编码即可。

请注意,Android Studio 的 lint 功能实际上会在某些情况下提示您使用这些特殊字符:

enter image description here

应用建议的修复后,您会得到一个省略号字符 "…",而不是一个字符的编码。