设为首页 加入收藏

TOP

iOS开发:解决NSXmlParser无法解析非utf-8编码的XML问题的方法
2014-11-24 14:04:11 来源: 作者: 【 】 浏览:0
Tags:iOS 开发 解决 NSXmlParser 无法 解析 utf-8 编码 XML 问题 方法

ios开发中经常会用到解析XML,但是iOS提供的NSXmlParser只能解析encoding是utf-8的XML文件。即xml文件开头必须是




在中文网页中,经常会碰到gb2312或GBK编码的XML文件,如


当iphone开发中的NSXMLParser碰到非utf-8编码时,会直接触发parser:parseErrorOccurred:,返回的错误编码是31,之后直接退出。



解决这个问题的思路当然是把非utf-8编码转换为utf-8编码,这个功能可以通过NSString类进行转换。


问题在于如何判断文件的编码是什么。这一问题的解决思路在于ASCII码在任何编码方式下都是一样的,这样,只要将XML文件开头的若干字节(大部分XML文件的Encoding在头部前面位置)内容直接当成utf-8编码读出来,可以从中检索是否有您要转换的编码。


以处理GB2312编码转换为例:



最后提下我碰到的一个有意思的问题,即有时候下载的XML文件被HTML Process过了。我发现原因可能是URL中的大小写问题。如http://news.163.com/special/00011K6L/rss_newstop.xml这个地址,如果K6L变成k6l,下载的XML文件就变了,大家可以试试.


如果用HPPLE解析HTML,碰到中文GB2312或GBK编码的网页,要先用gb编码解码,然后替换其中的gb字符串,再用utf8编码成data给parser就能解析中文网页了。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇iOS线程开发之--BLOCK & GCD(Gran.. 下一篇iOS 对象持久化之- 归档 archiving

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: