एन्कोड करने के लिए मैं इसे में विशिष्ट एन्कोडिंग हेक्स के बिना एक यूनिकोड स्ट्रिंग मुद्रित करने के लिए कोशिश कर रहा हूँ कोशिश करता है। मैं फेसबुक से इस डेटा को पकड़ रहा हूं जिसमें यूटीएफ -8 के एचटीएमएल हेडर में एक एन्कोडिंग प्रकार है। जब मैं टाइप प्रिंट करता हूं - यह यूनिकोड कहता है, लेकिन फिर जब मैं इसे यूनिकोड-एस्केप के साथ डीकोड करने का प्रयास करता हूं तो कहता है कि एक एन्कोडिंग त्रुटि है। जब मैं डिकोड विधि का उपयोग करता हूं तो यह एन्कोड करने का प्रयास क्यों कर रहा है?डिकोड समारोह अजगर
कोड
a='really long string of unicode html text that i wont reprint'
print type(a)
>>> <type 'unicode'>
print a.decode('unicode-escape')
>>> Traceback (most recent call last):
File "scfbp.py", line 203, in myFunctionPage
print a.decode('unicode-escape')
UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 1945: ordinal not in range(128)
यह अपने त्रुटि के लिए कारण नहीं है। वह एक यूनिकोड ऑब्जेक्ट को डीकोड करने का प्रयास कर रहा है। आप यूनिकोड डेटा को बाइनरी डेटा से डिकोड के बाद से, अजगर 2 पहले होगा * एनकोड * यह है, जो यह ascii कोडेक के साथ करता है। यही असफल रहा है। –
@Lennart Regebro: असल में मुझे लगता है कि अपने स्ट्रिंग के वास्तविक प्रकार 'str', नहीं' unicode' है। देखो कि वह स्ट्रिंग को कैसे शुरू कर रहा है - नोटिस वहां 'यू' नहीं है। मुझे लगता है कि उसके पास एक यूनिकोड स्ट्रिंग नहीं है, लेकिन एक * यूनिकोड-एस्केप * स्ट्रिंग (वही नहीं!)। यह वह है जिसे वह यूनिकोड को डीकोड करने की कोशिश कर रहा है। अगर मेरा सिद्धांत सही है तो मुझे लगता है कि यह जवाब वास्तव में सही है। –
@ मार्क बिअर्स: सच है, यह असंगत है, लेकिन गलत टाइप टाइप करने से आप को याद करना आसान है। :) और त्रुटि वह करता है जो वह करता है। यदि आप एक यूनिकोड ऑब्जेक्ट को डीकोड करते हैं, तो आपको एन्कोड त्रुटि मिलती है। –