【发布时间】:2012-01-05 11:38:32
【问题描述】:
在我的安卓应用中,我做了一个简单的吐司
Toast.makeText(
parent.getApplicationContext(),
parent.getResources().getIdentifier(result, "string",
parent.getPackageName()), Toast.LENGTH_LONG).show();
这个
parent.getResources().getIdentifier(result, "string", parent.getPackageName())
检索名称与来自strings.xml 的结果匹配的字符串。我有一个用于英语和德语的 strings.xml 文件。问题是德语中的特殊字符(如 Ü Ö Ä)无法正确显示。它们被一个方形符号替换。
strings.xml 是 utf-8 编码的。
问题出在哪里,我该如何解决?
【问题讨论】:
-
除非您知道确切为什么您需要它,否则不要使用
getApplicationContext()。在这种情况下,您肯定不需要它。请使用parent,而不是parent.getApplicationContext()。我怀疑这会解决你的问题,但我肯定会从那里开始,因为滥用Application会导致奇怪的 UI 行为。 -
toast 在扩展 AsyncTask 而非活动的类中执行。所以 parent 是创建任务的活动......
-
这仍然意味着您应该使用
parent,而不是parent.getApplicationContext()。 -
好的,我改了,但正如你所说的,问题仍然存在。
-
是的,我并不感到惊讶。通常,正方形表示字体中缺少字形。但是,如果您在相当普通的设备或仿真器上测试它,它肯定有
Droid和Ruboto字体中带有变音符号的字符的字形。因此,我不太确定为什么在这种情况下你会得到正方形。
标签: android character-encoding