解决WebView加载本地文件乱码
2016-07-14 13:29
405 查看
一、问题描述
这几天现场反馈一些问题,主要是文件浏览有部分文件显示乱码,像这样:
而文件本身又是用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包
点击获取文件编码格式下载
相关文章推荐
- Android WebView 上传文件支持全解析
- android WebView组件使用总结
- 解决video标签在安卓webview下无法自动播放问题
- Android webview与js交换JSON对象数据示例
- android中WebView和javascript实现数据交互实例
- Android的webview支持HTML5的离线应用功能详细配置
- Android开发之WebView组件的使用解析
- Android中实现Webview顶部带进度条的方法
- Android WebView控件捕获用户输入的信息
- Android中访问证书有问题的SSL网页的方法
- 基于Android中Webview使用自定义的javascript进行回调的问题详解
- Android webview用法实例简析
- Android编程实现WebView自适应全屏方法小结
- Android编程使WebView支持HTML5 Video全屏播放的解决方法
- Android WebView无法弹出软键盘的原因及解决办法
- Android使用WebView播放flash的方法
- Android中WebView无法后退和js注入漏洞的解决方案
- Android编程实现WebView全屏播放的方法(附源码)
- Android开发之WebView输入框提示解决办法
- Android组件WebView编写有道词典小案例分享