Unicode in xml.minidom

27/08/2010 - 10:20 von Ole Streicher | Report spam
Hallo,

irgendwie hakt bei mir die XML-verarbeitung.

Ich habe folgende minimale XML-Datei:
8<
<?xml version="1.0" encoding="UTF-8"?>
<font script="Jpan" typeface="MS ゴシック"/>
8<

und dazu folgendes Progràmmchen:

from xml.dom import minidom
d = minidom.parse('japan.xml')
d.writexml(file('japan2.xml', 'w'), encoding='UTF-8')

welches mir beim Schreiben erzàhlt:

UnicodeEncodeError:
'ascii' codec can't encode characters in position 0-1:
ordinal not in range(128)

Was mir hier nicht einleuchtet:

1. Warum beschwert sich Python nicht schon beim Lesen?
2. Warum beachtet er nicht das Encoding, welches das Problem doch
eigentlich lösen sollte?

Viele Grüße

Ole
 

Lesen sie die antworten

#1 Peter Otten
27/08/2010 - 11:09 | Warnen spam
Ole Streicher wrote:

Hallo,

irgendwie hakt bei mir die XML-verarbeitung.

Ich habe folgende minimale XML-Datei:
8<
<?xml version="1.0" encoding="UTF-8"?>
<font script="Jpan" typeface="MS ゴシック"/>
8<

und dazu folgendes Progràmmchen:

from xml.dom import minidom
d = minidom.parse('japan.xml')
d.writexml(file('japan2.xml', 'w'), encoding='UTF-8')

welches mir beim Schreiben erzàhlt:

UnicodeEncodeError:
'ascii' codec can't encode characters in position 0-1:
ordinal not in range(128)

Was mir hier nicht einleuchtet:

1. Warum beschwert sich Python nicht schon beim Lesen?



Warum sollte es?

2. Warum beachtet er nicht das Encoding, welches das Problem doch
eigentlich lösen sollte?



I glaube, dass der Parameter encoding nur für

<?xml ... encoding="das-hier" ?>

zustàndig ist. Versuche statt file(...) einfach mal

codecs.open("japan2.xml", "wb", encoding="UTF-8")

Peter

Ähnliche fragen