现在的位置: 首页 > 综合 > 正文

android webview loadData乱码问题解决方法

2013年12月04日 ⁄ 综合 ⁄ 共 1518字 ⁄ 字号 评论关闭

android webview loadData写成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就相当于限定了页面的字符


http://blog.sina.com.cn/s/blog_4c0706560100r8qy.html

关于WebViewloadData方法

Author : Aoyousatuo Zhao

http://blog.sina.com.cn/aoyousatuo

 

WebViewAndroid应用开发中常用的组件,我们可以通过它来显示网页或者html格式的String数据.

对于后者我们往往使用loadData方法来加载html数据。下面就笔者的实践来讨论一下WebViewloadData方法。

    对于loadData方法,ADK中的介绍为Load
the given data into the WebView. This will load the data into WebView using the data: scheme. Content loaded through this mechanism does not have the ability to load content from the network.
即,loadData主要被设计用来装载URI格式的数据,它不能通过网络来加载内容。使用的过程中笔者遇到并且解决了两个问题。

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

2.      许多实用loadData方法的朋友都遇到显示乱码的问题,那是因为编码器设置错误导致的。我们知道String类型的数据主要是unicode编码,而WebView一般为了节省资源使用的是UTF-8编码,所以我们在loadData的时候要告诉方法怎样转码。即要告诉它要将unicode编码的内容转成UTF-8编码的内容。有些朋友虽然在loadData的时候设置了编码方式,但是还是显示乱码,这是因为还需要为WebViewtext编码指定编码方式。举例如下:

               WebView
wv = (WebView)findViewById(R.id.webview) ;

                      String
content = getUnicodeContent() ;

               wv.getSettings().setDefaultTextEncodingName(“UTF -8”)
;

               wv.loadData(content,
“text/html”, “UTF
-8”) ;

抱歉!评论已关闭.