एक बग है अजगर 2.x में जो केवल निश्चित है अजगर 3.x। वास्तव में, यह बग OS X के iconv में भी है (लेकिन glibc वाला नहीं)।
यहाँ क्या हो रहा है:
पायथन 2.x UTF8 सरोगेट जोड़े [1] को अमान्य होने के रूप में नहीं पहचानता है (जो कि आपका चरित्र अनुक्रम है)
यह चाहिए वह सब हो जो आवश्यक हो:
foo.decode('utf8').encode('utf8')
लेकिन उस बग के लिए धन्यवाद जिसे वे ठीक नहीं कर रहे हैं, यह सरोगेट जोड़े को नहीं पकड़ता है।
इसे अजगर 2.x में और फिर 3.x में आज़माएं:
b'\xed\xbd\xbf'.decode('utf8')
यह बाद में एक त्रुटि (सही ढंग से) फेंक देगा। वे इसे 2.x शाखा में भी ठीक नहीं कर रहे हैं। अधिक जानकारी के लिए [2] और [3] देखें
[1] https://www.rfc-editor.org/rfc/ rfc3629#सेक्शन-4
[2] http://bugs.python.org/issue9133
[3] http://bugs.python.org/issue8271#msg102209