Python,XML & Encoding
最近遇到一个比较郁闷的事情,终于解决了,这里记上一笔。使用Python处理xml文件时,我使用了是xml.dom.minidom。以前比较巧合的是,处理的XML都没有包含汉字。这次的XML文件里包含了汉字,并且由于项目的其他部分的原因,这里的XML必须使用gb2312编码的,于是,xml.dom.minidom不能解析了。在网上搜索得知,Python的库处理gb2312编码的XML文件时有问题,需要转换成utf-8。
content = content.decode('gb2312').encode('utf-8')
content = content.replace('encoding="gb2312"', 'encoding="utf-8"')
读取的问题解决了。
接下来,后来我对读出的数据进行一些处理后,再生成另外的XML的时候,问题又发生了,说有的地方编码方式错误。经过检查,发现原来使用getAttribute方法从node读出的字符串是unicode(utf-16)的。这里很让人困惑,因为之前都已经把文本转成了utf-8的,很自然让人觉得getAttribute拿出来的东西是utf-8的。于是,再次的在需要编码转换的地方加上encode&decode。
总结一下:
1)python的xml.dom.minidom对gb2312编码的XML文件支持不好,需要转换成utf-8。
2)从node使用getAttribute拿出的数据是unicode的,不是想当然的utf-8。
页:
[1]