0

この質問のタイトルはこれと同じですが、私の問題は異なります。

tarfile.TarFile.extractfile()を使用してtar.gzアーカイブからデータを読み取り、xml.etree.ElementTree.Elementに保存しています。データはutf-8でエンコードされています。

xml.etree.ElementTree.ElementTree.write()を使用してファイルに入れようとすると、次のようになります。

Traceback (most recent call last):
  File "../python/GetDoc.py", line 150, in <module>
    ET.ElementTree(elements).write(args.outfile, encoding="us-ascii", method="text")
  File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 815, in write
    _serialize_text(write, self._root, encoding)
  File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1007, in _serialize_text
    write(part.encode(encoding))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 10: ordinal not in range(128)
4

2 に答える 2

1

ファイルからデータをどのように読み取っていますか? UTF-8 から Unicode オブジェクトに正しくデコードしていますか? ElementTree は、UTF-8 でエンコードされたバイト文字列ではなく、Unicode オブジェクトを必要とします。

于 2012-07-18T02:36:49.510 に答える
0

ElementTree.Elementオブジェクトに追加する前に、myString.decode('utf-8')を使用して文字列をユニコードに変換することで、これを解決することができました。ET.ElementTree.write()は他の文字列エンコーディングに満足していないようです。

于 2012-07-18T02:26:44.597 に答える