最近使用WebView加载中文网页的时候出现乱码问题,网上整理下基本解决方法:

其实我发现这不管是在线还是离线显示都可以使用LoadUrl方法!联网时好像是默认utf-8,离线读取本地时需要设置默认编码!如果图片无法离线显示 参考:  http://androidturing.iteye.com/blog/1280946

在网上看了许多关于WebView 的例子。但当自己做起来时,总是有些差别,是另一种体会。这节我就以 模拟器为2.1 为例来讲。

WebView 主要调用三个方法:LoadUrl、LoadData、LoadDataWithBaseURL。

1、LoadUrl        直接加载网页、图片并显示。(本地或是网络上的网页、图片、gif)

注意!要提前设置编码:webSettings.setDefaultTextEncodingName("UTF-8");

2、LoadData     显示文字与图片内容 (模拟器1.5、1.6)

3、LoadDataWithBase  显示文字与图片内容(支持多个模拟器版本)

下面来看看代码片段:

    package com.webviewdemo;  

    import java.net.URLEncoder;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView; public class WebViewDemo extends Activity { private WebView MyWebView;
static final String mimeType = "text/html";
static final String encoding = "utf-8"; /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//
MyWebView = (WebView) findViewById(R.id.MyWebview);
// this.webHtml();
// this.webImage();
// this.localHtmlZh();
// this.localImage();
// this.localHtml();
this.localHtmlImage();
} /**
* 直接网页显示
*/
private void webHtml() { try {
MyWebView.loadUrl("http://www.google.com");
} catch (Exception ex) {
ex.printStackTrace();
}
} /**
* 直接网络图片显示
*/
private void webImage() {
try {
MyWebView .loadUrl("http://www.google.com.hk/intl/zh-CN/images/logo_cn.gif");
} catch (Exception ex) {
ex.printStackTrace();
}
} /**
* 中文显示
*/
private void localHtmlZh() {
try {
String data = "<html>在模拟器 2.1 上测试</html>";
// utf-8编码处理(在SDK1.5模拟器和真实设备上都将出现乱码,SDK1.6上能正常显示)
// MyWebView.loadData(data, mimeType, encoding);
// 对数据进行编码处理(SDK1.5版本)
MyWebView.loadData(URLEncoder.encode(data, encoding), mimeType, encoding);
// MyWebView.loadDataWithBaseURL(null, data, mimeType, encoding, null); } catch (Exception ex) {
ex.printStackTrace();
}
} /**
* 显示本地图片文件
*/
private void localImage() {
try {
// 本地文件处理
String str = "file:///android_asset/icon.png";
MyWebView.loadUrl(str);
} catch (Exception ex) {
ex.printStackTrace();
}
} /**
* 显示本地网页文件
*/
private void localHtml() {
try {
// 本地文件处理(如果文件名中有空格需要用+来替代)
MyWebView.loadUrl("file:///android_asset/test.html");
} catch (Exception ex) {
ex.printStackTrace();
}
} /**
* 显示本地图片和文字混合的Html内容
*/
private void localHtmlImage() {
try {
String data = "<HTML>在模拟器 2.1 上测试,这是<IMG src=\"APK'>file:///android_asset/igg.jpg\"/>APK里的图片";
// SDK1.5本地文件处理(不能显示图片)
//MyWebView.loadData(URLEncoder.encode(data, encoding), mimeType, encoding);
// SDK1.6及以后版本
//MyWebView.loadData(data, mimeType, encoding);
// 本地文件处理(能显示图片)
MyWebView.loadDataWithBaseURL(null, data, mimeType, encoding, null);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

运行 localHtmlImage(...) 这个方法的结果:

在上面的所有方法中,模拟器2.1下 调用 LoadData 方法总是出现乱码。我想应该是2.1已经不在用它了吧。直接用LoadDataWithBaseURL 方法最简单,不再牵涉编码的转换。

其实我发现这不管是在线还是离线显示都可以使用LoadUrl方法!联网是默认utf-8,离线读取本地时需要设置默认编码!

本地url写法:

手机本地文件: "file:///data/data/。。。“

SD: "file:///mnt/sdcard/。。。“

如果图片无法离线显示 参考:  http://androidturing.iteye.com/blog/1280946

WebView三个方法区别(解决乱码问题)的更多相关文章

  1. win10系统U盘读取不了怎么解决 三种方法快速解决&quot;文件或目录损坏且无法读取& 发布时间:2020-06-05 09:19:46 作者:佚名 我要评论

    win10系统U盘读取不了怎么解决 三种方法快速解决"文件或目录损坏且无法读取&   发布时间:2020-06-05 09:19:46   作者:佚名    我要评论 win10电脑 ...

  2. 【Cocos2d-x游戏开发】解决Cocos2d-x中文乱码的三种方法

    众所周知,Cocos2d-x是一款不错的开源引擎,但是在Cocos2d-x中直接使用中文是无法正确显示的.比如下面的情况: 解决这个问题常用的有三种方法:1.通过转换为UTF-8编码来显示.2.使用i ...

  3. 解决移动端浏览器 HTML 音频不能自动播放的三种方法

    https://blog.csdn.net/PY0312/article/details/90349386 由于Android,IOS移动端的浏览器以及微信自带的浏览器为了用户更好的体验,规定不自动播 ...

  4. Spring实例化Bean三种方法:构造器、静态工厂、实例工厂

    Spring中Bean相当于java中的类,可以通过xml文件对bean进行配置和管理. 一.Bean的实例化: 构造器实例化.静态工厂实例化.实例工厂方式实例化. 目录: 构造器实例化: xml配置 ...

  5. 解决乱码的方法是,在执行SQL语句之前,将MySQL以下三个系统参数设置为与服务器字符集character-set-server相同的字符集

    character-set-server/default-character-set:服务器字符集,默认情况下所采用的. character-set-database:数据库字符集. characte ...

  6. C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?

    C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...

  7. php 解决乱码的通用方法

    一,出现乱码的原因分析 1,保存文件时候,文件有自己的文件编码,就是汉字,或者其他国语言,以什么编码来存储 2,输出的时候,要给内容指定编码,如以网页的形势输入时<meta http-equiv ...

  8. MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题 收藏 MySQL中涉及的几个字符集

    MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的.character-set-database:数据 ...

  9. centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课

    centos   LB负载均衡集群 三种模式区别 LVS/NAT 配置  LVS/DR 配置  LVS/DR + keepalived配置  nginx ip_hash 实现长连接  LVS是四层LB ...

随机推荐

  1. SQL 存在一个表而不在另一个表中的数据

    原文链接:http://blog.csdn.net/windren06/article/details/8188136 (转)A.B两表,找出ID字段中,存在A表,但是不存在B表的数据.A表总共13w ...

  2. 大视野 1012: [JSOI2008]最大数maxnumber(线段树/ 树状数组/ 单调队列/ 单调栈/ rmq)

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 9851  Solved: 4318[Submi ...

  3. 小米刷机教程和GAE for android

    小米上的刷机教程:http://www.miui.com/getrom.php?r=2gae for android :https://github.com/madeye/gaeproxy/wiki

  4. L107

    It is advisable to take an open- minded approach to new idea. 对新思想采取不存先入之见的态度是明智的.That said, the com ...

  5. 使用手势对UIImageView进行缩放、旋转和移动(转)

    原文地址:http://blog.csdn.net/crazy_frog/article/details/8664108 // 添加所有的手势 - (void) addGestureRecognize ...

  6. http请求 详解

  7. 《zero to one》读后感

    五一放假,赶上下雨,天气很凉爽,这种天气很舒服,不冷不热,听着滴答的雨声,看看书其实也不错. 约了两个同学吃了顿饭,然后决定窝在实验室了,最近看了彼得.蒂尔的<zero to one>,确 ...

  8. HDU3727 Jewel(主席树+树状数组(或二分))

    Problem Description Jimmy wants to make a special necklace for his girlfriend. He bought many beads ...

  9. Java内存垃圾回收机制(转贴)

    Java的堆是一个运行时数据区,类的实例(对象)从中分配空间.Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通 过new.newarray.anewarray和mul ...

  10. MySQL实战 | 06/07 简单说说MySQL中的锁

    原文链接:MySQL实战 | 06/07 简单说说MySQL中的锁 本文思维导图:https://mubu.com/doc/AOa-5t-IsG 锁是计算机协调多个进程或纯线程并发访问某一资源的机制. ...