python写xml文件,代码如下所示(省略上下文):
#coding:utf-8
import sys
……
f = open(xmlpath, 'w')
dom.writexml(f,encoding='utf-8')
……
执行时,脚本报错:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 4-12: ordinal not in range(128)
再执行时,xml文件便被破坏,导致xml解析错误。
原因:
xml中注释有中文,writexml时,Python自然调用ascii编码解码程序去处理字符流,当字符流不属于ascii范围内,就会抛出异常(ordinal not in range(128))。查看writexml的源码:
解决方法:
在开头加上
reload(sys)
sys.setdefaultencoding('utf-8')
解决方法就是修改默认编码,需要注意的是需要先调用reload方法。