问题的描述
有个同学从网上下了一个数据包,是一个dat结尾的文件。读取出来的时候发现是GB2312的编码,但是当用GB2312去解码的时候还是遇到了问题。似乎有个别的字节解析不了。最后发现是字符串中的一个空格的编码并不是GB2312。那么问题来了,怎么做到正确解析这样的字符串呢?
问题的发现
with open('./news_sohusite_xml.dat', 'r') as f:
for line in f:
#print chardet.detect(line) #chardet可以用来检测字符串的编码
print line.decode("gb2312").encode("gbk")
上面的代码中提到了可以用chardet这个库中的detect函数来检测字符串的编码,得到结果是gb2312的编码方式。但是用gb231