Android InputStreamReader 解析gbk、gb2312编码的xml文件 编码问题. - bat800(竹林) 的专栏 - 博客频道 - CSDN.NET

Android InputStreamReader 解析gbk、gb2312编码的xml文件 编码问题.

分类: Android 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);

更多相关文章

  1. Android(安卓)入门 和 环境搭建
  2. 【转】升级android sdk时A folder failed to be renamed or move
  3. android内核字符驱动设备实战之----------设备驱动程序篇
  4. 【Android的从零单排开发日记】之入门篇(三)——Android目录结构
  5. android 基础知识整理 1
  6. Android(安卓)ImageView和TextView居中
  7. Android(安卓)数据存储
  8. android实现文件下载的几种方式
  9. [Android] 环境优化配置Android(安卓)Studio发展NDK

随机推荐

  1. 【android】时间选择器
  2. Android 简单音乐播放器(破烂版,后续更新)
  3. 解决Android studio 启动报错java.lang.R
  4. Android DHT11驱动
  5. android 读取 icon
  6. Android Studio报错:Ignoring unknown pa
  7. android 如何把新建项目的那个 android a
  8. Android开发实现HttpClient工具类
  9. 第一番 Android 不能进行debug调试
  10. 直播源码Android实现 曲线路径动画