Android 解析gbk、gb2312编码的xml文件(转)
2011-02-16 13:15
489 查看
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);
newsItems=chinaNews.getNewsItems();
通过以上三步就可以解析gbk或者gb2312编码的xml文件,将网络上的rss资源文件解析后,用ListView显示出来,就成了一个简单的rss阅读器
通过网上搜索,最终找到了解决办法:
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);
newsItems=chinaNews.getNewsItems();
通过以上三步就可以解析gbk或者gb2312编码的xml文件,将网络上的rss资源文件解析后,用ListView显示出来,就成了一个简单的rss阅读器
![](http://dl.javaeye.com/upload/attachment/365776/2b92d6ca-b462-348a-8fbb-5a7ccc44f9fd.png)
相关文章推荐
- Android InputStreamReader 解析gbk、gb2312编码的xml文件 编码问题.
- 掌间无限—Android 解析gbk、gb2312编码的xml文件
- android 解析gbk编码格式的网络xml文件
- 文字编码ASCII,GB2312,GBK,GB18030,UNICODE,UCS,UTF的解析
- 汉字编码解析 GBK编码 GB2312等
- Android解析xml文件的方式
- android之sax解析xml文件
- Android解析XML文件(二)
- GBK、GB2312等编码问题
- android解析xml文件的方式之PULL解析
- 常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、unicode、UTF-8
- Android中使用PULL方式解析XML文件
- 老罗Android开发视频教程 (android解析xml文件 )3集集合
- simplexml_load_string 解析gb2312编码的xml
- Android使用pull方法解析XML文件
- Android中XML文件的序列化生成与解析
- android 使用pull方式解析xml文件
- Android如何解析自定义的XML文件
- Android数据存储之XmlPull解析XML文件(输出部分)
- 【miscellaneous】编码格式简介(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)