Encoding Probleme mit Python etree.tostring
Frage
Ich verwende Python 2.6.2 des xml.etree.cElementTree ein XML-Dokument zu erstellen:
import xml.etree.cElementTree as etree
elem = etree.Element('tag')
elem.text = (u"Würth Elektronik Midcom").encode('utf-8')
xml = etree.tostring(elem,encoding='UTF-8')
Am Ende des Tages, xml wie folgt aussieht:
<?xml version='1.0' encoding='UTF-8'?>
<tag>Würth Elektronik Midcom</tag>
Es sieht aus wie tostring die Codierung Parameter ignoriert und ‚ü‘ in eine andere Zeichencodierung codiert ( ‚ü‘ eine gültige utf-8-Kodierung ist, bin ich ziemlich sicher).
Jede Beratung, was ich falsch mache würde sehr geschätzt werden.
Lösung
Sie kodieren den Text zweimal. Versuchen Sie folgendes:
import xml.etree.cElementTree as etree
elem = etree.Element('tag')
elem.text = u"Würth Elektronik Midcom"
xml = etree.tostring(elem,encoding='UTF-8')
Andere Tipps
etree.tostring(elem, encoding=str)
wird str
zurück, aber binary
nicht in Python 3
Sie können auch auf ein Unicode-String ohne Erklärung serialise durch die Funktion als
unicode
Codierung vorbei (oder in py3str
), oder der Name 'Unicode'. Dadurch ändert sich der Rückgabewert von einem Byte String in einen unverschlüsselte Unicode-String.