繁体   English   中英

在Android v4.0 WebView中显示®注册商标符号?

[英]Display ® registered trademark symbol in Android v4.0 WebView?

源HTML字符串(包括符号)来自strings.xml资源文件,并注定要在WebView中显示。 我已经在资源中对此进行了测试:

<string name="MY_STRING">®</string>
  • 使用资源(®)中的实际商标符号构建项目,但是在WebView中显示时,项目显示为“®”(即“ A”抑音符,后跟注册商标符号)-即显示了两个字符,第一个不正确且不想要的内容。
  • 使用实体引用&#174;时,我会看到相同的结果&#174;
  • 使用&reg; 失败,并且该项目无法生成。

这是将字符串资源推送到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问题。

字符串资源并非旨在容纳任意HTML,包括任意实体引用。

也许能得到一个任意实体引用,如果你预先逃脱它的工作:

<string name="MY_STRING">&amp;reg;</string>

IIRC,应解码为&reg; 在调用getString()

最后,您需要获取&reg; WebView 如果您无法确定使用字符串资源的方法,则需要将该值存储在其他位置。

您正在使用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>

这不是Android开发人员的答案,但是如果您尝试向某人发送短信并且Ⓡ和™都不可用作符号(例如在我的LG手机Android 7.0上),则只是简单一些。 只需从此消息线程中复制这些符号,然后将其发送给自己,或将其塞入快速备忘录中即可。 然后,您可以随时使用它们以备将来使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM