安卓 WebView和loadData

可以使用以下方法对Web视图中的内容进行设置loadData(String data,String mimeType,String encoding)

如何处理未知的html数据编码问题?

有编码列表吗?

我从我的大学知道,就我而言,html来自DB,并使用latin-1编码。我尝试将编码参数设置为latin-1,设置为ISO-8859-1 / iso-8859-1,但仍然无法显示ä,ö,ü等特殊符号。

我将非常感谢您的任何建议。


慕婉清6462132
浏览 652回答 3
3回答

qq_笑_17

myWebView.loadData(myHtmlString, "text/html; charset=UTF-8", null);这完美的作品,尤其是在Android 4.0,这显然忽略了字符编码中的HTML。经过2.3和4.0.3测试。实际上,我不知道最后一个参数除了“ base64”以外还需要其他什么值。Google的一些示例在其中放置了null。

慕后森

据我了解,loadData()只需生成一个data:URL并提供数据即可。阅读的javadoc为loadData():如果encoding参数的值为'base64',则数据必须编码为base64。否则,数据必须对安全URL字符范围内的八位字节使用ASCII编码,并对超出范围的八位字节使用标准的URL%xx十六进制编码。例如, '#', '%', '\', '?' 应分别替换为%23,%25,%27和%3f。通过此方法形成的“数据”方案URL使用默认的US-ASCII字符集。如果需要设置其他字符集,则应形成一个“数据”方案URL,该URL在mediatype部分中显式指定一个charset参数,然后调用loadUrl(String)。请注意,从数据URL的mediatype部分获得的字符集始终会覆盖HTML或XML文档本身中指定的字符集。因此,您应该使用US-ASCII并自己转义任何特殊字符,或者仅使用Base64对所有内容进行编码。假设您使用的是UTF-8(我尚未使用latin1进行过测试),则以下内容应该可以工作:String data = ...;  // the html dataString base64 = android.util.Base64.encodeToString(data.getBytes("UTF-8"), android.util.Base64.DEFAULT);webView.loadData(base64, "text/html; charset=utf-8", "base64");
打开App,查看更多内容
随时随地看视频慕课网APP