2009-09-15 21 views
7

estoy usando xml.etree.cElementTree pitón de 2.6.2 para crear un documento XML:problemas de codificación con etree.tostring del pitón

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 parece a:

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

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

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

Respuesta

16

Está 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') 
0

etree.tostring(elem, encoding=str)

volverá 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 la codificación (o str en Py3), o el nombre 'unicode'. Esto cambia el valor de retorno de una cadena de bytes a una cadena Unicode no codificada.

Cuestiones relacionadas