Domanda

Sto usando xml.etree.cElementTree di python 2.6.2 per creare 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')

Alla fine della giornata, xml appare come:

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

Sembra che la tostrazione abbia ignorato il parametro di codifica e abbia codificato 'ü' in qualche altra codifica dei caratteri ('ü' è una codifica utf-8 valida, ne sono abbastanza sicuro).

Qualsiasi consiglio su cosa sto facendo di sbagliato sarebbe molto apprezzato.

È stato utile?

Soluzione

Stai codificando il testo due volte. Prova questo:

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

Altri suggerimenti

etree.tostring (elem, encoding = str)

restituirà str ma non binario in Python 3

  

Puoi anche serializzare una stringa Unicode senza dichiarazione di           passando la funzione unicode come codifica (o str in Py3),           o il nome "unicode". Ciò modifica il valore di ritorno da un byte           stringa a una stringa unicode non codificata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top