Pergunta

Eu estou usando xml.etree.cElementTree python 2.6.2 do para criar um 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')

No final do dia, os olhares XML como:

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

Parece que tostring ignorado o parâmetro de codificação e codificado 'U' em alguma outra codificação de caracteres ( 'U' é um válido codificação UTF-8, estou bastante certeza).

Qualquer conselhos sobre o que estou fazendo de errado seria muito apreciada.

Foi útil?

Solução

Você está codificar o texto duas vezes. Tente isto:

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

Outras dicas

etree.tostring(elem, encoding=str)

retornará str mas não binary em Python 3

Você também pode serialise a uma seqüência de caracteres Unicode sem declaração passando a função unicode como codificando (ou str em PY3), ou o nome 'unicode'. Isso muda o valor de retorno de um byte string para uma string unicode não codificada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top