में पाइथन 2.7 में अनपेक्षित सरोगेट चरित्र का पता लगाएं/हटाएं। मैं यूनिकोड स्ट्रिंग "abc\udc34xyz"
को यूटीएफ -8 में सफलतापूर्वक रूपांतरित कर सकता हूं (परिणाम "abc\xed\xb0\xb4xyz"
है)। लेकिन जब मैं यूटीएफ -8 स्ट्रिंग को उदाहरण के लिए पास करता हूं। pango_parse_markup()
या g_convert_with_fallback()
, मुझे "इनपुट इनपुट में अमान्य बाइट अनुक्रम" जैसी त्रुटियां मिलती हैं। स्पष्ट रूप से जीटीके/पेंगो फ़ंक्शन स्ट्रिंग में "अनपेक्षित सरोगेट" का पता लगाते हैं और (सही ढंग से?) इसे अस्वीकार करते हैं।पाइथन 2 + जीटीके
अजगर 3 भी UTF-8 में यूनिकोड स्ट्रिंग के रूपांतरण की अनुमति नहीं है (त्रुटि: " 'utf-8' कोडेक चरित्र सांकेतिक शब्दों में बदलना नहीं कर सकता '\ udc34' स्थान 3: अनुमति नहीं सरोगेट्स"), लेकिन मैं "abc\udc34xyz".encode("utf8", "replace")
चला सकता हूं ताकि एक वैध यूटीएफ 8 स्ट्रिंग प्राप्त हो सके जो अकेले सरोगेट के साथ किसी अन्य चरित्र द्वारा प्रतिस्थापित किया जा सके। यह मेरे लिए अच्छा है, लेकिन मुझे पाइथन 2 के लिए समाधान की आवश्यकता है।
तो सवाल यह है कि: पायथन 2.7 में, मैं यूनिकोड स्ट्रिंग को यूटीएफ -8 में कैसे परिवर्तित कर सकता हूं जबकि कुछ प्रतिस्थापन चरित्र के साथ अकेले सरोगेट को बदलना, FFFD? अधिमानतः केवल मानक पायथन कार्यों और जीटीके/जीएलआईबी/जी ... कार्यों का उपयोग किया जाना चाहिए।
बीटीडब्ल्यू। Iconv स्ट्रिंग को यूटीएफ 8 में परिवर्तित कर सकता है लेकिन यू + एफएफएफडी के साथ इसे बदलने के बजाय बस खराब चरित्र को हटा देता है।