日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WebView三个方法区别(解决乱码问题)

發(fā)布時(shí)間:2024/8/24 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebView三个方法区别(解决乱码问题) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近使用WebView加載中文網(wǎng)頁的時(shí)候出現(xiàn)亂碼問題,網(wǎng)上整理下基本解決方法:

其實(shí)我發(fā)現(xiàn)這不管是在線還是離線顯示都可以使用LoadUrl方法!聯(lián)網(wǎng)時(shí)好像是默認(rèn)utf-8,離線讀取本地時(shí)需要設(shè)置默認(rèn)編碼!如果圖片無法離線顯示?參考:??http://androidturing.iteye.com/blog/1280946?

?

在網(wǎng)上看了許多關(guān)于WebView 的例子。但當(dāng)自己做起來時(shí),總是有些差別,是另一種體會(huì)。這節(jié)我就以 模擬器為2.1 為例來講。

?? WebView 主要調(diào)用三個(gè)方法:LoadUrl、LoadData、LoadDataWithBaseURL。

???? 1、LoadUrl??????? 直接加載網(wǎng)頁、圖片并顯示。(本地或是網(wǎng)絡(luò)上的網(wǎng)頁、圖片、gif)

注意!要提前設(shè)置編碼:webSettings.setDefaultTextEncodingName("UTF-8");

?

???? 2、LoadData???? 顯示文字與圖片內(nèi)容 (模擬器1.5、1.6)

???? 3、LoadDataWithBase? 顯示文字與圖片內(nèi)容(支持多個(gè)模擬器版本)

下面來看看代碼片段:

?

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(); } /** * 直接網(wǎng)頁顯示 */ private void webHtml() { try { MyWebView.loadUrl("http://www.google.com"); } catch (Exception ex) { ex.printStackTrace(); } } /** * 直接網(wǎng)絡(luò)圖片顯示 */ 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 上測(cè)試</html>"; // utf-8編碼處理(在SDK1.5模擬器和真實(shí)設(shè)備上都將出現(xiàn)亂碼,SDK1.6上能正常顯示) // MyWebView.loadData(data, mimeType, encoding); // 對(duì)數(shù)據(jù)進(jìn)行編碼處理(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(); } } /** * 顯示本地網(wǎng)頁文件 */ private void localHtml() { try { // 本地文件處理(如果文件名中有空格需要用+來替代) MyWebView.loadUrl("file:///android_asset/test.html"); } catch (Exception ex) { ex.printStackTrace(); } } /** * 顯示本地圖片和文字混合的Html內(nèi)容 */ private void localHtmlImage() { try { String data = "<HTML>在模擬器 2.1 上測(cè)試,這是<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(); } } }
運(yùn)行 localHtmlImage(...) 這個(gè)方法的結(jié)果:

在上面的所有方法中,模擬器2.1下 調(diào)用 LoadData 方法總是出現(xiàn)亂碼。我想應(yīng)該是2.1已經(jīng)不在用它了吧。直接用LoadDataWithBaseURL 方法最簡單,不再牽涉編碼的轉(zhuǎn)換。

其實(shí)我發(fā)現(xiàn)這不管是在線還是離線顯示都可以使用LoadUrl方法!聯(lián)網(wǎng)是默認(rèn)utf-8,離線讀取本地時(shí)需要設(shè)置默認(rèn)編碼!

本地url寫法:

手機(jī)本地文件:?"file:///data/data/。。。“

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

?

如果圖片無法離線顯示 參考: ?http://androidturing.iteye.com/blog/1280946

轉(zhuǎn)載于:https://www.cnblogs.com/rysinal/p/5834477.html

總結(jié)

以上是生活随笔為你收集整理的WebView三个方法区别(解决乱码问题)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。