我需要在Python中读取一个XML文件并抓取各种内容,但是我遇到了一个令人沮丧的Unicode编码错误,即使我查找过仍然无法解决。
这个程序在解析一个包含欧元符号的名称时崩溃了。以下是错误信息:
以下是我的代码片段:
#!/usr/bin/python
# coding: utf-8
from xml.dom.minidom import parseString
with open('data.txt','w') as fout:
#do a lot of stuff
nameObj = data.getElementsByTagName('name')[0]
name = nameObj.childNodes[0].nodeValue
#... do more stuff
fout.write(','.join((name,bunch of other stuff))
这个程序在解析一个包含欧元符号的名称时崩溃了。以下是错误信息:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 60: ordinal not in range(128)
我理解为什么欧元符号会出问题(因为它位于128,对吧?),但我认为添加 # coding: utf-8 应该可以解决这个问题。我还尝试添加 .encode(utf-8) 以使名称看起来像
name = nameObj.childNodes[0].nodeValue.encode(utf-8)
但是那也不起作用。我做错了什么?(如果有人想知道,我正在使用Python 2.7.3)
编辑:Python在fout.write()行崩溃——只要名称字段像这样就可以顺利进行:
<name>United States, USD</name>
但是对于姓名字段会崩溃,例如:
<name>France, € </name>