源HTML字符串(包括符号)来自strings.xml资源文件,并且目标是在WebView中显示。我在资源中测试了这个:
<string name="MY_STRING">®</string>
®
®
失败,项目无法构建。这是将字符串资源推送到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,v2.3.x上的Wildfire S和v3.2上的Samsung Tab 10.1上,它运行正常。我已经改变了问题标题,以澄清这是一个ICS问题。
答案 0 :(得分:4)
字符串资源不是为了保存任意HTML而设计的,包括任意实体引用。
如果你预先逃脱它,你可能能够获得任意实体引用:
<string name="MY_STRING">&reg;</string>
IIRC,在您致电®
后,应解码为getString()
。
在一天结束时,您需要®
到WebView
。如果您无法确定使用字符串资源的方法,则需要将此值存储在其他位置。
答案 1 :(得分:1)
您正在使用loadData(html,“text / html”,“UTF-8”);这个方法期望你的变量html中有一个html字符串。但事实并非如此。试试
String html = "<html><body>My text is ®</body></html>";
例如。
- 已更新为拥有完整的HTML文档
如果您将其存储在资源文件中,请使用:
<string name="MY_STRING" formatted="false"><html><body>My text is ®</body></html></string>
答案 2 :(得分:0)
这不是和Android开发人员的回答,但只是一些简单的事情,如果你试图给某人发短信,并且Ⓡ或™都不能用作符号(比如我的LG手机Android 7.0)。只需从这个消息线程中复制这些符号,然后将它们发送给自己,或者将它们填入快速备忘录中。然后你可以随时使用它们。