[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