最近一段时间,在用python访问http request请求,返回plist(xml)文件后,遇到gb2312编码格式解析时遇到了一些问题,最后通过上网搜索得以解决,现在特系统分析以下。首先使用http request请求,获得访问数据r,其类型为class ‘request.models.Response’,可以使用type(r)查看。
import requests
import plistlib
curl = "http://******"
r = requests.get(curl)
d = plistlib.readPlistFromString(r.content)
由以上字符串到dict的解析过程中,如果r.content的格式是utf-8,那么该语句运行正确。如果当r.content的格式是一些特殊编码(如gb2312)时,python会报错,此时需要将编码格式转换到utf-8。查看r.content编码格式,需要使用chardet库,下载链接https://pypi.python.org/pypi/chardet,方法如下: