欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android webView 中使用loadData出现乱码的解决方案 WebView.goBack() 出现空白页面

程序员文章站 2022-06-04 14:50:30
...

首先并非全部的手机都出现乱码,试了下小米一加是正常的,oppo vivo是乱码;

最初使用的是mWebView.loadDataWithBaseURL(null, html, "text/html", "utf-8", null);没有出现乱码,但是当点击其中的链接再调用webview的goback()方法,返回的时候将会出现空白页;当使用了mWebView.loadData()方法之后不出现空白了,但是乱码了,乱码了,乱码了!

乱码无非就是编码的问题,按照原来的方式这么写:

mWebView.loadData(html, "text/html", "UTF-8");

感觉没有任何问题啊,前后端都是utf-8;还是不行,最后在一个帖子上找到了答案:

loadData(html, "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就相当于限定了页面的字符


引用自:https://blog.csdn.net/top_code/article/details/9163597