WebView 使用loadData加载网页乱码之解决办法
来源:互联网 发布:seo招聘吧 编辑:程序博客网 时间:2024/06/08 06:11
android 4.0以上的版本,Webview若使用loadData会出现中文乱码
解决办法:
使用loadDataWithBaseURL方法
原因:
请看loadData和loadDataWithBaseURL区别
首先,从方法的定义来看:
public void loadData(String data, String mimeType, String encoding)
public void loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl)
loadDataWithBaseURL()比loadData()多两个参数,可以指定HTML代码片段中相关资源的相对根路径,也可以指定历史Url,两个方法的其余三个参数相同。
其次,两个方法加载的HTML代码片段有些不同
loadData()中的html 代码中不能包含'#', '%', '\', '?'四中特殊字符,这就为我们内嵌css样式等制造了麻烦,因为css中经常用'#', '%'等字符,需要如何处理呢?我们需要用UrlEncoder编码为#, %, ', ? ,所以loadData需要对这些特殊字符进行转换,而loadDataWithBaseURL不需要转换。
loadData() 中特殊字符的转换方法:
StringBuilder buf = new StringBuilder(html.length());
loadDataWithBaseURL 使用方法:
StringBuilder data = new StringBuilder("<html><body bgcolor=\"#F2F6F8\">");
webView.loadDataWithBaseURL("", data, "text/html", "UTF-8","");
使用 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方法
0 0
- Android 4.0 WebView 使用loadData加载网页乱码之解决办法
- WebView 使用loadData加载网页乱码之解决办法
- Android 4.0 WebView 使用loadData加载网页乱码之解决办法
- webview.loadData加载出现乱码问题
- android webView 加载HTML代码使用loadData方法中文乱码问题
- WebView loaddata中文乱码
- WebView loadData 乱码
- webView loaddata乱码问题
- webView.loadData 乱码解决
- Android中使用WebView.loadData()中文乱码问题
- Android webview loadData 中文乱码
- android webview loaddata乱码问题
- android webView.loadData乱码解决
- webView loadData 中文乱码问题
- webView loadData 中文乱码问题
- webView loadData 中文乱码问题
- android webView.loadData乱码解决
- webView loadData 中文乱码问题
- Android反调试笔记
- Raspberry 编译环境设置
- apache如何解决跨域资源访问
- Docker与虚拟机性能比较
- 【机房收费】组合查询
- WebView 使用loadData加载网页乱码之解决办法
- 算法导论第四章笔记
- Java线程池
- HashMap--JDK8系列
- startOS gcc 后显示“致命错误:stdio.h: 没有那个文件或目录
- FFMPEG专题1---配置configure
- 【01】 - Oracle基本select语句
- JVM(一) JVM的基本结构
- 第六课 菜单操作 一 菜单创建