Kein UTF8 bei tree.write('d:/_test/test.xml')

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
callsaender
User
Beiträge: 22
Registriert: Samstag 23. November 2013, 16:55

Kein UTF8 bei tree.write('d:/_test/test.xml') ???

So soll die datei aussehen .....

Code: Alles auswählen

      <title>
        <de>Über PT2000</de>
        <en>About PT2000</en>
        <he>אודות  PT2000 </he>
        <it>Informazioni su PT2000</it>
        <tr>Emininiz PT2000</tr>
        <uk>про PT2000</uk>
        <ru>о PT2000</ru>
      </title>
Aber sie sieht so aus

Code: Alles auswählen

     <title>
        <de>Über PT2000</de>
        <en>About PT2000</en>
        <he>????? PT2000 </he>
        <it>Informazioni su PT2000</it>
        <tr>Emininiz PT2000</tr>
        <uk>??? PT2000</uk>
        <ru>? PT2000</ru>
      </title>
bzw. bei Phyton kommt diese Fehlermeldung

return text.encode(encoding)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 16: ordinal not in range(128)

Hat jemand ne Ahnung was man da importieren muss / kann und der Befehl dann heist ?
callsaender
User
Beiträge: 22
Registriert: Samstag 23. November 2013, 16:55

.. habe es gerade selbst gefunden :-)

tree.write('d:/_test/resources_out.xml', encoding="UTF-8")
BlackJack

@callsaender: Entweder ist `encoding` an den Namen `ascii` gebunden oder `text` nicht an den Typ den Du vermutest. `ElemenTree` arbeitet mit Unicode, das heisst alles was etwas ausserhalb von ASCII enthält wird als Unicode-Objekt zurückgegeben und man muss für die Texte/Attribute Unicode-Objekte übergeben.

Deine Lösung ist keine. Falls das tatsächlich das Symptom beseitigt haben sollte, dann hast Du damit nur ein Problem verdeckt was Du besser lösen solltest. Denn dieses Argument ist nur nötig wenn man das XML unbedingt in einer *anderen* Kodierung als UTF-8 speichern möchte.

Kann es sein das die Darstellung mit den Fragezeichen einfach nur dadurch zustande kommt, dass der Editor (oder womit auch immer Du das angeschaut hast) die falsche Kodierung eingestellt hatte?
Antworten