قضايا الترميز مع etree.tostring بايثون
سؤال
وأنا باستخدام 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ü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)،
أو "يونيكود" اسم. هذا يغير قيمة الإرجاع من بايت
سلسلة لسلسلة يونيكود غير مشفر.
لا تنتمي إلى StackOverflow