解決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