decodeयूनिकोड स्ट्रिंग्स की विधि में वास्तव में कोई एप्लिकेशन नहीं है (जब तक कि आपके पास किसी कारण से यूनिकोड स्ट्रिंग में कुछ गैर-पाठ डेटा नहीं है - नीचे देखें)। यह मुख्य रूप से ऐतिहासिक कारणों से है, मुझे लगता है। पायथन 3 में यह पूरी तरह से चला गया है।
unicode().decode()डिफ़ॉल्ट (ascii) कोडेक का उपयोग कर के एक अंतर्निहित एन्कोडिंग प्रदर्शन करेगा s। इसे इस तरह सत्यापित करें:
>>> s = u'ö'
>>> s.decode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 0:
ordinal not in range(128)
>>> s.encode('ascii')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 0:
ordinal not in range(128)
त्रुटि संदेश बिल्कुल समान हैं।
इसके लिए str().encode()यह दूसरा तरीका है - यह डिफ़ॉल्ट एन्कोडिंग के साथ एक अंतर्निहित डिकोडिंग का प्रयास करता है s:
>>> s = 'ö'
>>> s.decode('utf-8')
u'\xf6'
>>> s.encode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0:
ordinal not in range(128)
इस तरह से उपयोग किया जाता है, str().encode()यह भी शानदार है।
लेकिन बाद के तरीके का एक और अनुप्रयोग है जो उपयोगी है: ऐसे एन्कोडिंग हैं जिनका चरित्र सेट से कोई लेना-देना नहीं है, और इस प्रकार 8-बिट स्ट्रिंग्स को एक सार्थक तरीके से लागू किया जा सकता है:
>>> s.encode('zip')
'x\x9c;\xbc\r\x00\x02>\x01z'
आप सही हैं, हालांकि: इन दोनों अनुप्रयोगों के लिए "एन्कोडिंग" का अस्पष्ट उपयोग ... अजीब है। फिर से, पायथन 3 में अलग byteऔर stringप्रकार के साथ , यह अब एक मुद्दा नहीं है।