我有一个当前的Android应用程序,通过资源使用i18n。 res / values-es / strings.xml等。当我在语言设置为Espanol的设备上进行测试时,它会从values-es文件中提取正确的资源,但是重音字符是不合适的。
例如,我想使用带有重音(ó)的小写字母o。我已尝试使用strings.xml文件中的实际字符(使用Ubuntu上的字符映射创建字符串)和实体,在任何一种情况下,它都会像我不认识的其他字符集重音一样:
使用许多不同的文本编辑器时,相同的字符在strings.xml中看起来很完美。该文件是UTF-8(尝试使用Eclipse中的Android“向导”工具重新创建它以确保)。
的strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="label_app_version">Versión</string>
</resources>
现在我在其他Android应用程序中使用过法语和德语,各种各样的口音,并没有看到这个问题,所以我现在完全感到困惑。这次我做错了什么?
答案 0 :(得分:3)
这种变音实际上被称为短语,在许多东欧语言中很常见。我曾经遇到过同样的问题。我甚至在这里有一个问题。由于没有人解决问题,所以值得一试......
我还不清楚:
然后,您可以尝试:
\u00f3
而不是“ó”(这里我们使用相同的PT)。喜欢:Versi\u00f3n
。你是否得到适当的拉丁小o?只是为了清除事情。ant
($ ant release
)手动构建应用。报告结果。这个可以帮助这里的人(他们比我更有经验)猜测问题出在哪里。
祝你好运!
答案 1 :(得分:3)
我终于解决了这个问题。我在代码中使用了一个字体并调用了setTypeface。我使用的字体不得包含其他语言所需的特殊字符。在设置字体之前,我需要检查以确保我的用户正在使用我的字体支持的区域设置。
我应该意识到这一点并提前检查过。
所以最重要的是,如果你在不同的语言环境中使用某些字符会得到奇怪的结果,请确保你没有使用不支持这些字符的字体。回退到不使用字体(不要调用setTypeface)并测试那种方式。
答案 2 :(得分:1)
检查实际strings.xml文件的存储方式。
在Eclipse的文件树中,右键单击strings.xml文件并选择属性。
您将获得该文件的属性对话框。
如果尚未选择,请选择左栏中的“资源”行。
检查底部的“文本文件编码”区域。 它可以选择为“默认”或特定编码,例如选择“UTF-8”。
选择UTF-8选项。保存存档。清洁&amp;构建项目(重新生成资源),然后查看是否有任何更改。
参见附页截图。
Suerte,Andrew
答案 3 :(得分:1)
这很奇怪,因为它不应该导致问题。也许你应该尝试将字符串嵌入CDATA部分,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="label_app_version"><![CDATA[Versión]]></string>
</resources>