特殊字符在安卓系统中无法显示。

4

我有一个包含特殊字符的xml文件。 例如:

<string name="test_text">"test¹, test², test⁶, test⁷ "</string>

当我使用指令通过字符串:
((TextView) view.finViewdById(R.id.test)).setText(R.string.test_text);

输出结果如下:

测试¹,测试²,测试,测试

我无法显示特殊字符:⁶,⁷。

有人能帮我解决这个问题吗?

谢谢!

3个回答

3

我刚刚使用了两个选项进行了测试:

Log.d("TEST", getString(R.string.test_text));
Toast.makeText(this, getString(R.string.test_text), Toast.LENGTH_LONG).show();

在 Toast 中,它确实显示为 test¹,test²,test,test,而在 Logcat 中字符串正常显示为test¹,test²,test⁶,test⁷,因此看起来你定义字符串资源的方式是正确的。我的猜测是,用于 UI 的默认字体没有提供这些字符()。您可以尝试使用 assets 中的自定义字体,并确保它支持所需字符。

事实上,我意识到这是一个字体问题。你能推荐一些适合我的情况的字体吗?Typeface中的那些字体不能正常工作。 - Antonio
2
很难预测哪种字体适合您的需要。也许您可以尝试使用 DejaVuSans.ttf。只需将它添加到您项目的 assets 文件夹中,并像这样使用它:tv.setTypeface(Typeface.createFromAsset(getResources().getAssets(), "DejaVuSans.ttf"));,其中 tv 是您的 TextView。 - Vladimir

1
你可以尝试这个。
((TextView) findViewById(R.id.test)).setText(getString(R.string.test_text, "UTF-8"));

3
似乎不对:getString (int resId, Object... formatArgs)规范):"UTF-8"将被视为格式参数,而不是编码。 - Vladimir
刚刚检查了我的设备...一切都正常。也许我在某些方面有误...正在再次检查。 - stinepike

0

你在 XML 文件中添加了头部吗?

<?xml version="1.0" encoding="utf-8"?>

如果问题仍然存在或者您需要确保一切显示正确,您可以将字符串保存为UTF8编码的代码,并在读取后解析它。就像Swing窗口构建器在输入特殊字符时所做的那样。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接