博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android InputStreamReader 解析gbk、gb2312编码的xml文件 编码问题.
阅读量:6681 次
发布时间:2019-06-25

本文共 1058 字,大约阅读时间需要 3 分钟。

分类:
1180人阅读
(0)
Android 支持三种解析xml文件的方式,dom,sax,pull,我用的比较多的是sax解析,但发现sax默认只解析utf-8编码的xml文件; 
通过网上搜索,最终找到了解决办法: 
1.就是先判断URL资源上的xml文件的编码方式 
2.然后通过InputStreamReader 设定好编码,然后将InputStreamReader通过InputSource的构造方法传给InputSource 
3.sax解析InputSource资源时,就会按照指定的编码方式解析 
1.判断url资源上的xml文件编码方式,需要通过第三方的jar文件 
//得到探测器代理对象 
CodepageDetectorProxy detector =   CodepageDetectorProxy.getInstance(); 
//向代理对象添加探测器 
detector.add(JChardetFacade.getInstance());   
//得到编码字符集对象 
Charset charset =  detector.detectCodepage(url); 
//得到编码名称 
String encodingName = charset.name(); 
2.通过InputStreamReader对象设定解析时的编码 
InputSource inputSource=null; 
InputStream stream = null; 
  //如果是GBK编码 
   if("GBK".equals(EncodingUtil.checkEncoding(url))){ 
    stream = url.openStream(); 
    //通过InputStreamReader设定编码方式 
    InputStreamReader streamReader = new InputStreamReader(stream,"GBK"); 
    inputSource = new InputSource(streamReader); 
   }else{ 
    //是utf-8编码 
    inputSource = new InputSource(url.openStream()); 
    inputSource.setEncoding("UTF-8"); 
   } 
3.使用sax解析InputSource对象 
ChinaNews chinaNews = SAXRssService.readRssXml(inputSource); 

转载地址:http://dfxao.baihongyu.com/

你可能感兴趣的文章
NO.14 禅道项目管理软件ZenTaoPHP框架安装
查看>>
zabbix安装
查看>>
ひとり上手 中岛美雪 (漫步人生路 )
查看>>
win8.1下解决Visual C++不兼容的方法
查看>>
spark-sql中数据类型比较(double vs decimal)
查看>>
intellij 修改jsp 或者 html 自动加载页面变化
查看>>
MongoDB 常用命令
查看>>
B/S结构 进销存 客户管理 人资管理系统
查看>>
iOS 学习资料整理 {非常有用,强烈推荐}
查看>>
Linux上安装使用boost入门指导
查看>>
Tomcat去除项目名
查看>>
spring boot Controller不起作用的解决方案
查看>>
分布式ID生成算法总结
查看>>
目录管理和文件管理
查看>>
广播事件的两种类型。
查看>>
cmd进入控制Mysql&出现乱码的问题
查看>>
POJ 2407 Relatives 题解《挑战程序设计竞赛》
查看>>
关于那些最好玩的户外APP合集下(适合资深驴友、牛逼设计狮、装逼攻城狮)...
查看>>
syslog本地和远程日志分离
查看>>
ISCSI共享存储配置跟parted命令简述
查看>>