[Python-de] xml mit Umlauten parsen
Christopher Arndt
chris.arndt at web.de
Mo Mär 17 17:02:34 UTC 2008
Hallo Mathias,
Mathias Uebel schrieb:
> Diez B. Roggisch schrieb:
>> wo genau bitte kommt denn der Fehler? beim erzeugen des DOM? Oder in code den
>> du uns nicht zeigst?
>>
> Ja, genau; in dem Teil, der jetzt kommt:
>
> def liesText(pretext, knoten):
> for k in knoten.childNodes:
> if k.nodeType == k.TEXT_NODE:
> print pretext, k.nodeValue.strip()
In der letzen Zeile liegt der Fehler: XML-Parser liefern im Allgemeinen
immer Unicode-Objekte zurück. Du versuchst, den Unicode-String
(k.nodeValue) auf der Console auszugeben. Dabei wir der Unicode-String
in das Encoding der Konsole umgewandelt. Welches das ist sagt dir
sys.stdout.encoding.
Du solltest den Unicode-String vor der Ausgabe manuell in das gewünschte
Encoding umwandeln. Das ist generell nötig bei der Benutzung von
Unicode-Objekten, i.e.
print k.nodeValue.encode('<encoding>')
Natürlich muss das Zielencoding die im Unicode verwendeten Zeichen auch
unterstützen. Für europäische Sprachen ist das meistens entweder latin1
oder utf-8.
Siehe auch:
http://wiki.python.de/Unicode
Chris