转载请注明出处:http://blog.youkuaiyun.com/wht3xr/article/details/24518395(来自wht3xr荣海游侠的csdn博客)
今天找了个系统是2.3.4的手机玩,测试发现自己的程序以前正常的地方,现在不正常了,让我灰常蛋疼。
问题描述:
服务器返回的数据是XML格式,然后是GBK编码,之前在4.0,4.1.2,4.3的系统解析,一切正常,当我拿2.3.4的机器测试时,问题出现了,XML不能解析,抛出异常:
org.xmlpull.v1.XmlPullParserException: Error parsing document. (position:line -1, column -1) caused by: org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 0: unknown encoding
纠结了半天,终于找到问题所在:
首先看我XmlPullParser的实例化:
XmlPullParser xmlPull = Xml.newPullParser();
这种实例化,对于UTF-8编码的xml文件解析,不管是2.3的系统还是4.0的系统,一切都正常,但是对于GBK编码的xml文件解析,就会出现上面的错误。(好深的坑啊 ( ̄▽ ̄)")
为了解决上面的问题,XmlPullParser的实例化需要修改一下:
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xmlPull = factory.newPullParser();
这样就解决了2.3系统无法解析GBK编码的xml的问题。
在工作过程中遇到的问题,希望能帮到大家。