ich versuche mit minidom einen xml-String zu parsen. Wenn ich den String einfach mal mit print 'rausschreibe, sieht er ganz normal aus (ist auch klar, weil er in cp1252 kodiert ist). Ein Teil des Strings könnte so aussehen:
Code: Alles auswählen
<Name>Gerät 1</Name>
Code: Alles auswählen
xml.parsers.expat.ExpatError: not well-formed (invalid token): line 1, column 9
Frage 1:
Kann ich dem Parser mitteilen, was für ein encoding der String hat?
Frage 2:
Ich könnte den String umkodieren:
Code: Alles auswählen
import codecs
from xml.dom.minidom import parseString
boxXml = "<Name>Gerät 1</Name>".encode( "cp1252")
utf8Encoder = codecs.getencoder( "utf_8")
newXml = utf8Encoder( boxXml)[0]
dom1 = parseString( newXml) # klappt
dom2 = parseString( boxXml) # produziert obigen Fehler
Woher weiß der encoder, wovon er ausgehen muß? Soll heißen:
Woher weiß der utf_8-encoder, daß er mein 'ä' bitteschön als utf_8-'ä' zu interpretieren hat? Es kann doch sein, daß die Zahl 'ä' (ein Wert zwischen 0 und 255, in c-Notation sozusagen) in einem anderen Zeichensatz als cp1252 vielleicht ein 'Z' repräsentiert.
Wenn der encoder also umcodiert, von einer Darstellung in eine andere, woher kennt er die Zuordnungen?
Vielleicht bin ich auf dem Holzweg und sehe den Baum im Wald nicht. Kann jemand von Euch Licht ins Dunkel bringen?
Gruß und Danke,
Christoph