Pregunta

Estoy usando xml.etree.cElementTree de python 2.6.2 para crear un documento 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')

Al final del día, xml se ve así:

<?xml version='1.0' encoding='UTF-8'?>
<tag>W&#195;&#188;rth Elektronik Midcom</tag>

Parece que la cadena ignoró el parámetro de codificación y codificó 'ü' en otra codificación de caracteres ('ü' es una codificación utf-8 válida, estoy bastante seguro).

Cualquier consejo sobre lo que estoy haciendo mal sería muy apreciado.

¿Fue útil?

Solución

Estás codificando el texto dos veces. Prueba esto:

import xml.etree.cElementTree as etree
elem = etree.Element('tag')
elem.text = u"Würth Elektronik Midcom"
xml = etree.tostring(elem,encoding='UTF-8')

Otros consejos

etree.tostring (elem, encoding = str)

devolverá str pero no binary en Python 3

  

También puede serializar a una cadena Unicode sin declaración por           pasando la función unicode como codificación (o str en Py3),           o el nombre 'unicode'. Esto cambia el valor de retorno de un byte           cadena a una cadena unicode sin codificar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top