سؤال

وأنا باستخدام xml.etree.cElementTree الثعبان 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 version='1.0' encoding='UTF-8'?>
<tag>W&#195;&#188;rth Elektronik Midcom</tag>

ويبدو tostring تجاهل المعلمة ترميز وترميز "ü" في بعض ترميز الأحرف الأخرى ( 'ü' هو ترميز 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 ولكن ليس binary في بيثون 3

<اقتباس فقرة>   

ويمكنك أيضا serialise إلى سلسلة Unicode دون إعلان           تمرير وظيفة unicode كما الترميز (أو str في PY3)،           أو "يونيكود" اسم. هذا يغير قيمة الإرجاع من بايت           سلسلة لسلسلة يونيكود غير مشفر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top