Вопрос

Я использую xml.etree.cElementTree из Python 2.6.2 для создания 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')

В конце дня xml выглядит так:

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

Похоже, что tostring проигнорировал параметр кодирования и закодировал '& # 252;' в какую-то другую кодировку символов ('& # 252;' - допустимая кодировка utf-8, я вполне уверен).

Любой совет относительно того, что я делаю неправильно, будет принят с благодарностью.

Это было полезно?

Решение

Вы дважды кодируете текст. Попробуйте это:

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

Другие советы

etree.tostring (elem, encoding = str)

вернет str , но не двоичный в Python 3

  

Вы также можете сериализовать строку Unicode без объявления           передача функции unicode в качестве кодировки (или str в Py3),           или имя «Юникод». Это меняет возвращаемое значение из байта           строка в некодированную строку Юникода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top