安卓笔记android WebView乱码解决办法

本文介绍了在Android中遇到WebView显示中文乱码的问题及其解决办法。包括在Servlet中设置UTF-8编码、使用`loadDataWithBaseURL`或`loadData`方法指定charset为UTF-8,以及设置`setDefaultTextEncodingName`为UTF-8。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@ by moses  WebView乱码解决办法






1. 在servlet中 使用 resp.setContentType("text/html;charset=UTF-8") 使用utf-8编码后在发送响应内容


--------------------------------------------------------------------------------------------------------------------


2. 使用 loadDataWithBaseURL(null,String url,"text/html","UTF-8",null);


    使用 WebView 的 loadData(detail, "text/html", "UTF-8");出现中文乱码了。


    改成 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就相当于限定了页面的字符。


---------------------------------------------------------------------------- 

测试发现 mWebView.loadData(detail,"text/html;charset=UTF-8", null); 在一些硬件设备上


仍然存在中文乱码的情况,改成  WebView.loadDataWithBaseURL(null, detail, "text/html", "UTF-8", null); 


就没问题。具体原因还没有找到,如果有知道的同学,希望你可以@我一下!


--------------------------------------------------------------------------------------------------------------------


3. WebView.getSettings().setDefaultTextEncodingName("UTF-8");






注意:


   经过实践,笔者发现,loadData不能加载图片内容,如果要加载图片内容或者获得更强大的Web支持请使用


loadDataWithBaseURL();













 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值