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阅读器
- 大小: 59.4 KB
分享到:
相关推荐
本篇文章将深入探讨三种在Android中解析XML的方法:DOM(文档对象模型)、Pull(拉取解析器)和SAX(简单API for XML),并且会特别强调如何识别文件编码。 首先,DOM解析是将整个XML文件加载到内存中形成一个树形...
以上就是“Android解析XML并使用WebView显示”的主要技术点,开发者需要理解并掌握这些知识点,才能在实际项目中顺利实现这一功能。通过不断实践和学习,我们可以更好地理解和运用这些工具,提升应用的质量和用户...
### cocos2d-X显示中文字符和解析XML文件详解 #### 一、背景介绍 随着游戏开发的全球化趋势,越来越多的游戏需要支持多语言环境,其中中文显示成为了一个重要的需求。cocos2d-X作为一款跨平台的游戏开发框架,在...
在实际开发中,处理GB18030编码的场景可能包括:从数据库读取GB18030编码的记录、网络传输GB18030编码的数据、解析GB18030编码的XML或JSON文件等。理解并熟练掌握GB18030编码的处理方式对于开发涉及中文字符的应用...
- SQLite数据库默认支持UTF-8编码,但如果你的XML文件使用了其他编码,比如GBK,那么在插入数据前,需要先将数据转换为UTF-8。 - 如果在Android Studio中操作SQLite,确保数据库文件的编码设置正确,避免因为IDE...
在Windows上,有时可能会遇到GBK编码的问题,这时需要进行编码转换。 通过以上步骤,你应该能够在VS2010或2005环境下,成功地读取XML文件,将其内容存储到SQLite数据库中,并解决可能出现的中文乱码问题。在实际...
例如,一个Win32程序发送GBK编码的数据到Android设备,而Android程序假设数据是UTF-8编码,解析时就会出现问题。 2. 文件读写:在跨平台的文件系统操作中,如果文件编码不一致,读取或保存文件时可能也会产生乱码。...
例如,读取GBK编码的文件时,应使用`new InputStreamReader(fileInputStream, "GBK")`。 3. **网络传输**:在网络通信中,如HTTP协议,需要明确指定编码。HTTP头中的`Content-Type`字段用于指定响应体的字符编码,...
Java语言提供了`Charset`类来处理不同的字符编码,例如`Charset.forName("GBK")`用于创建GBK编码对象。 2. **InputStream与OutputStream的转换**:在读取文件或网络流时,我们通常使用`InputStreamReader`和`...
乱码通常出现在两个场景:一是文件编码不一致,比如读取的文件是GBK编码,而程序默认使用的是UTF-8;二是字符集设置不当,例如网络请求返回的数据编码与解析时设定的编码不匹配。针对这两种情况,我们可以采取以下...
常见的网页编码格式有ASCII、ISO-8859-1、GB2312、GBK、Big5以及Unicode的实现UTF-8等。这些编码决定了字符如何在计算机中存储和显示,尤其是在处理非英文字符时显得尤为重要。 当我们需要从网页中获取其编码格式时...
- 字符编码:字符编码是将字符与二进制数值之间建立映射关系的方式,常见的有ASCII、ISO-8859-1、GB2312、GBK、Big5、UTF-8等。每种编码都有其适用范围,例如ASCII主要针对英文,而UTF-8则支持Unicode,能表示世界...
GBK是中国大陆的汉字编码标准,它扩展了GB2312,包含了更多的汉字和其他字符。UTF-8则是一种变长的Unicode编码,能表示所有Unicode字符,包括GBK中的所有字符。在设计这个阅读器时,开发者考虑到了跨地区、跨平台的...
2. **TextView属性**:如果只是简单的需求,可以直接在XML布局文件中使用`TextView`,并设置`android:singleLine="true"`和`android:ellipsize="marquee"`,让文字自动滚动。但这种方法的可定制性较差,不能实现复杂...
在`pom.xml`文件中,通过修改`maven-javadoc-plugin`插件的相关配置来指定编码格式为GBK或UTF-8。 ```xml <groupId>org.apache.maven.plugins <artifactId>maven-javadoc-plugin <version>3.3.1 ...
5. **格式支持**:为了支持多种文本格式,源代码可能包含了对不同编码(如UTF-8、GBK)的支持,以及可能的Markdown或HTML解析。 6. **权限管理**:在Android 6.0及以上版本,应用需要动态请求权限,如读取存储权限...