[转载]Android 4.0 WebView 使用loadData加载网页乱码之解决办法_寒灵_新浪博客.
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″,””);