源 HTML 字符串(包括符号)来自 strings.xml 资源文件,并且注定要显示在 WebView 中。我已经在资源中对此进行了测试:
<string name="MY_STRING">®</string>
- 使用资源 (®) 中的实际商标符号,项目构建,但在 WebView 中显示时显示为“®”(即“A”抑扬符,后跟注册商标符号) - 即显示两个字符,第一个不正确和不需要的。
- 使用实体引用时,我看到了相同的结果,
®
- 使用
®
失败,项目无法构建。
这是将字符串资源推送到 WebView 中的代码:
String html = getString(R.string.MY_STRING);
((WebView)findViewById(R.id.terms_web_view)).loadData(html, "text/html", "UTF-8");
我也试过这个,但没有帮助: webView.getSettings().setDefaultTextEncodingName("UTF-8");
我将 HTML 字符串推送到 Logcat,它看起来很好 - 它正确显示了符号。那么如果字符串没问题,并且 WebView 设置为使用 UTF-8,为什么符号显示不正确?
更新 我在其他设备上测试过。我只能在 Android v4.04 上的 Galaxy Nexus 上重现此问题。在 Nexus One v2.3.x、Wildfire S 在 v2.3.x 和 Samsung Tab 10.1 在 v3.2 上,它运行良好。我更改了问题标题以澄清这是一个 ICS 问题。