掌间无限—Android 解析gbk、gb2312编码的xml文件
2011-09-26 09:38
483 查看
工作开发中,我们遇到的XML文件大多数都是UTF—8格式的文件,可一旦遇到不是UTF—8的XML文件,我们该怎么去解析?android默认的有三种解决方式:,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文件。
解决方法:
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文件。
相关文章推荐
- android 解析gbk编码格式的网络xml文件
- Android应用程序apk内xml文件编码解析
- Android InputStreamReader 解析gbk、gb2312编码的xml文件 编码问题.
- Android 解析gbk、gb2312编码的xml文件(转)
- 【转载】Android之AndroidManifest.xml文件解析
- Android数据存储——2.文件存储_E_Pull解析XML文档
- android学习——使用SAX、DOM 和 PULL 解析xml文件,及使用pull生成xml文件
- AndroidManifest.xml文件解析
- linux weblogic dom4j报解析GBK编码的xml时 报错无效的encoding gbk 解决方法
- Android解析XML文件
- 【Android网络开发の3】XML之PULL方式 解析和生成XML文件
- AndroidManifest.xml文件解析
- android编程之XML文件解析方法详解(附源码)
- Android 中使用XmlPullParser解析网络XML文件
- Android中采用XmlPullParser解析xml文件错误的有关问题
- Android之AndroidManifest.xml文件解析
- Android学习笔记之AndroidManifest.xml文件解析
- AndroidManifest.xml文件解析
- Android使用Pull解析器解析XML文件
- AndroidManifest.xml文件解析(1)