注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Zeb的博客

Blood and Glory

 
 
 

日志

 
 
关于我
Zeb

做人两大原则:奔放,勇于尝试。

网易考拉推荐

Python,XML & Encoding  

2007-12-10 16:36:06|  分类: 知识的坟墓 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

  最近遇到一个比较郁闷的事情,终于解决了,这里记上一笔。

  使用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。

  评论这张
 
阅读(940)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017