PythonでXMLファイルを読んでいろいろなことを把握する必要があり、私はグーグルでも理解できないUnicode Encode Errorでうんざりなエラーに遭遇しました。Python Unicodeエンコードエラー序数が範囲外<128>ユーロ記号
は、ここに私のコードの抜粋です:
#!/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))
私が解析しています名前エントリはユーロ記号が含まれている場合、これが見事にクラッシュします。ここでエラーです:(?それは右、128のだから)ユーロ記号がそれを台無しになる理由
UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 60: ordinal not in range(128)
は、私が理解し、私は#のコーディングをやって考えた:UTF-8はそれを修正します。私はまた、名前の代わりに.encode(utf-8)を追加しようとしました。
name = nameObj.childNodes[0].nodeValue.encode(utf-8)
しかし、それも動作しません。私は間違って何をしていますか? (誰もが知りたい場合、私は、Python 2.7.3を使用しています)
EDIT:Pythonはfout.write()ライン上でクラッシュ - 名前のフィールドが似ているところは罰金を通過します:
<name>United States, USD</name>
しかし、のような名前のフィールドにがらくたます:あなたは常にASCIIでファイルを読み込みますopen
組み込み関数を使用してPythonでファイルを開いているとき
<name>France, € </name>
ここで例外が生成されますか?完全なトレースバックを表示できますか? – Blckknght
fout.write()行はどこにあるのでしょうか。エラーが発生しました。名前がobjでクラッシュしました。それを編集します。 – Joe