簡體   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