Problèmes d'encodage avec etree.tostring de python
Question
J'utilise xml.etree.cElementTree pour python 2.6.2 pour créer un document xml:
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')
À la fin de la journée, xml ressemble à:
<?xml version='1.0' encoding='UTF-8'?>
<tag>Würth Elektronik Midcom</tag>
Il semble que tostring ait ignoré le paramètre de codage et codé '& # 252;' dans un autre encodage de caractères ('& # 252;' est un encodage utf-8 valide, je suis à peu près sûr).
Tout conseil sur ce que je fais mal serait grandement apprécié.
La solution
Vous codez le texte deux fois. Essayez ceci:
import xml.etree.cElementTree as etree
elem = etree.Element('tag')
elem.text = u"Würth Elektronik Midcom"
xml = etree.tostring(elem,encoding='UTF-8')
Autres conseils
etree.tostring (elem, encoding = str)
renverra str
mais pas binaire
en Python 3
Vous pouvez également mettre en série une chaîne Unicode sans déclaration par passer la fonction
unicode
en tant qu'encodage (oustr
en Py3), ou le nom 'unicode'. Cela change la valeur de retour d'un octet chaîne en une chaîne unicode non codée.