1. 程式人生 > >解決WebView載入本地檔案亂碼

解決WebView載入本地檔案亂碼

一、問題描述

這幾天現場反饋一些問題,主要是檔案瀏覽有部分檔案顯示亂碼,像這樣:

這裡寫圖片描述

而檔案本身又是用WebView載入的,出現有的檔案正常有的檔案不正常。

二、問題解決

webView 載入主要有:loadUrl(),loadData(),loadDataWithBaseURL()幾個方法,我們是直接使用的loadUrl(),傳入檔案路徑。

初次:
新增:setDefaultTextEncodingName(“utf-8”); //設定文字編碼

設定文字編碼,執行後無效。

然後懷疑是否是亂碼格式不是UTF-8,
再次:
新增:setDefaultTextEncodingName(“gbk”); //設定文字編碼

證明了我的猜想,這次亂碼的檔案正常了,不亂碼的檔案瘋了。。。。

問題解決的入口來了:如何動態的獲取檔案編碼格式,然後在loadUrl()之前設定預設編碼,這樣就可以實現亂碼問題的解決。

查閱相關資料後,比較靠譜的方法:

獲取檔案格式:用的開源工程 JCharDet

public String getFileEncoding(String filePath){

        CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();
        detector.add(new ParsingDetector(false
)); detector.add(JChardetFacade.getInstance()); detector.add(UnicodeDetector.getInstance()); Charset charset = null; File file = new File(filePath); try { charset = detector.detectCodepage(file.toURI().toURL()); } catch (Exception e) { e.printStackTrace(); } String charsetName = "GBK"
; if(charset != null){ if(charset.name().equals("US-ASCII")){ charsetName = "ISO-8859-1"; }else if(charset.name().startsWith("UTF")){ charsetName = charset.name(); } } return charsetName; }

然後呼叫:

setDefaultTextEncodingName(Tools.getFileEncoding(path));
loadUrl(path);

OK,問題順利解決:

這裡寫圖片描述

附上獲取檔案編碼格式工具方法和相關jar包

相關推薦

解決WebView載入本地檔案亂碼

一、問題描述 這幾天現場反饋一些問題,主要是檔案瀏覽有部分檔案顯示亂碼,像這樣: 而檔案本身又是用WebView載入的,出現有的檔案正常有的檔案不正常。 二、問題解決 webView 載入主要有:loadUrl(),loadData(),loa

webView載入本地檔案(zip壓縮檔案)

/** * 解壓 * * @param context 上下文物件 * @param assetName 壓縮檔名 * @param outputDirectory 輸出目錄 * @t

iOS webView載入本地html、css、js檔案

1.h5本地html檔案,載入到web view上面,不需要網路亦可以加載出來。 2.h5內容格式設定檔案寫法 文章內容 在IOS開發中,可以通過webView來載入HTML檔案 步驟如下: 1.需要有一個webView,可以通過sto

android webview 載入本地html並且解決多圖卡頓問題

使用webview載入本地html,因為本地html使用多張圖片,滑動起來卡頓,解決方法如下: 把資料夾放入assets資料夾下 Activity載入: WebView wView = (

Android生成PDF檔案webview載入本地PDF或者網路PDF

生成pdf Andrid端生成PDF侷限性太差,尚未有優雅的解決方案。但網上眾說紛紜,實踐者少之又少,高質量的博文也是鳳毛麟角,大家都是博文搬用工,也沒有誰做過詳細的探索。筆者就自己的一點經驗做點分享。 使用iText iText不支援中文,要

載入本地檔案WebView

Android 的 WebView 提供了一系列非常靈活的API,可從多種源中載入檔案。但是,由於同源規則限制了可向 web 瀏覽器載入資料的位置,在一些特定的情況下我們不得不重新調整 WebView 的行為。 Ⅰ 載入一個給定 URL 的 res/drawable 本

iOS WebView 載入本地資源(圖片,檔案等)

NSString *path = [[NSBundle mainBundle] pathForResource:@"關於.docx" ofType:nil]; NSURL *url = [NSURL fileURLWithPath:path];

pig無法載入本地檔案解決小記

今天測試pig的一個小用法需要載入本地檔案,又是第一次用pig,結果本地檔案讀取不到,後經搜尋得到需要在pig命令列模式下載入本地

解決WKWebView載入本地HTML頁面ajax請求跨域的問題

一、建立WKWebView的時候設定WKWebViewConfiguration的屬性_allowUniversalAccessFromFileURLs為YES,程式碼如下     WKWebViewConfiguration *configuration = [[WKWebVi

使用jquery的load方法載入本地檔案

1. 方法一(圖一):使用chrome瀏覽器,關掉瀏覽器,通過截圖的兩條命令執行chrome瀏覽器,再執行test.html檔案。方法二(圖二):選擇chrome瀏覽器快捷方式,右鍵選擇屬性,再點選快捷方式,在目標"C:\Program Files (x86)\Google\Chrome\Appli

WebView 載入本地資源中的字型庫

從assets中獲取檔案      file:///android_asset/page1.jpg 從drawable中獲取圖片  file:///android_res/drawable/page1.jpg 從font中獲取字型           file:///an

解決Github載入ipynb檔案緩慢/失敗

在Github上雖然能夠直接載入ipynb檔案,但是速度很慢,並且容易載入失敗。利用https://nbviewer.jupyter.org/ 可以快速載入ipynb檔案。 使用方法: 1.複製要開啟的ipynb檔案的連結, 例如 https://github.com/Sun-S

Android 以JSON格式儲存和載入本地檔案

本章主要講把一個物件以json格式儲存在沙盒中,然後又從沙盒中將json資料讀取出來。 每個應用的沙盒目錄都是裝置/data/data目錄的子目錄,且預設以應用包命名。例如,CriminalIntent應用的沙盒目錄全路徑為:/data/data/com.bi

iOS webView載入本地html 呼叫 js,css (基本使用)

首先載入本地的html檔案: NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]; NSString *path = [[NSBundle mainBund

iOS WebView載入本地HTML/js/css/image 方案

在ios專案下新增本地HTML/js/css/image 檔案時有兩種選擇: 一個是 Create groups(建立虛擬結構-包結構) 一個是 Create folder references (建立實體結構) 當載入本地的HTML/js/css

Android使用WebView載入本地圖片終極大殺招

WebView 主要呼叫三個方法:loadUrl、loadData、loadDataWithBaseURL。 1、loadUrl 直接載入網頁、圖片並顯示。(本地或是網路上的網頁、圖片、gif) 2、loadData 顯示文字與圖片內容

IOS學習之WebView載入本地HTML程式碼或網路資源

新建SingleViewApplication應用,命名WebViewSample, 在storyboard中拖3個Button,定義動作,再拖一個WebView,然後建立他們的弱連結輸出口,得到如下的程式碼: #import <UIKit/UIKit.h>

ReactNative Webview載入本地html異常問題

本文主要解決ios釋出release版本時,react native webview載入本地html顯示異常問題。 產生此問題得條件: ios載入本地的html,且html內部包含引用外部的js連結(注:連結指向本地),但是,如果你html所有js

瀏覽器無法載入本地檔案,在後臺讀取位元組流後返回給前端顯示

由於安全性考慮,許多瀏覽器不允許訪問本地檔案。 用谷歌瀏覽器開啟html時,img的src賦值如F:/XXX/XXX/**.jpg,console顯示no allowed to load local resourses 1. 將src改為file:///F:/XXX形式,依

解決WebView載入URL跳轉到系統瀏覽器的問題

1.問題 webview載入url跳轉到系統瀏覽器,使用者體驗非常的差 2.解決方法 重寫WebViewClient的shouldOverrideUrlLoading(WebView view, String url)使用view