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&#195;&#188;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é.

Était-ce utile?

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 (ou str 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top