使用 loadData方法是中文部分会出现乱码,即使指定“utf-8”、“gbk”、“gb2312”也一样。
webView.getSettings().setDefaultTextEncodingName("UTF -8");//设置默认为utf-8
// webView.loadData(data, "text/html", "UTF -8");//API提供的标准用法,无法解决乱码问题
webView.loadData(data, "text/html; charset=UTF-8", null);//这种写法可以正确解码
原因如下:
乱码
如果用 loadDataWithBaseURL时,如果不传入URL时,刷新会造成白屏,因为刷新时调用的的是reload方法,reload是根据传入的URL进行一次重新加载即再次loadUrl(url),不传入URL时,默认的的URL是about:blank
可以使用loadData,刷新只是从缓存里面取,但是在4.0以上的,如果按照API里所写的loadData(data, “UTF-8”, null);时会乱码,如果写成loadData(data,
"text/html; charset=UTF-8", null);loadData最终的机制是会把传入的三个参数拼接在一起,然后再进行loadUrl操作,参数就是data, "text/html; charset=UTF-8", null这三个进行拼装,加入text/html; charset=UTF-8就相当于限定了页面的字符
本文介绍了解决Android中WebView加载中文内容出现乱码的问题。通过调整loadData方法的参数,确保了中文字符能够被正确解析。
2836

被折叠的 条评论
为什么被折叠?



