यहां एक सरल स्पष्टीकरण का प्रयास है जो केवल पायथन 3 पर लागू होता है। मुझे उम्मीद है कि एक लेट व्यक्ति से आ रहा है, यह पूरी तरह से uninitiated के लिए कुछ भ्रम को दूर करने में मदद करेगा। यदि कोई तकनीकी त्रुटिपूर्णता है, तो कृपया मुझे क्षमा करें और इसे इंगित करने के लिए स्वतंत्र महसूस करें।
आप हमेशा की तरह अजगर 3 का उपयोग कर एक स्ट्रिंग बनाने मान लीजिए:
stringobject = 'ant'
stringobject
एक यूनिकोड स्ट्रिंग होगा।
यूनिकोड स्ट्रिंग यूनिकोड वर्णों से बना है। ऊपर stringobject
में, यूनिकोड वर्ण अलग-अलग अक्षर हैं, उदा। ए, एन, टी
प्रत्येक यूनिकोड चरित्र को कोड बिंदु असाइन किया जाता है, जिसे हेक्स अंकों के अनुक्रम के रूप में व्यक्त किया जा सकता है (एक हेक्स अंक 16 मानों पर ले सकता है, 0-9 और ए-एफ से लेकर)। उदाहरण के लिए, 'a'
पत्र '\u0091'
के बराबर है, और 'चींटी' '\u0061\u006E\u0074'
के बराबर है।
तो तुम कि यदि आप में टाइप करें,
stringobject = '\u0061\u006E\u0074'
stringobject
तुम भी उत्पादन 'ant'
मिल जाएगा मिल जाएगा।
अब, यूनिकोड एन्कोडिंग रूप में जाना प्रक्रिया में बाइट्स में बदल जाती है,। की रिवर्स प्रक्रिया को बाइट्स को यूनिकोड में कनवर्ट करना डीकोडिंग के रूप में जाना जाता है।
यह कैसे किया जाता है? चूंकि प्रत्येक हेक्स अंक 16 अलग-अलग मानों पर ले सकता है, इसलिए इसे 4-बिट बाइनरी अनुक्रम में प्रतिबिंबित किया जा सकता है (उदाहरण के लिए हेक्स अंक 0 को बाइनरी में 0000 के रूप में व्यक्त किया जा सकता है, हेक्स अंक 1 0001 के रूप में व्यक्त किया जा सकता है और आगे)। यदि एक यूनिकोड चरित्र में कोड हेक्टेयर होता है जिसमें चार हेक्स अंकों होते हैं, तो इसे एन्कोड करने के लिए 16-बिट बाइनरी अनुक्रम की आवश्यकता होगी।
विभिन्न एन्कोडिंग सिस्टम यूनिकोड को बिट्स में परिवर्तित करने के लिए अलग-अलग नियम निर्दिष्ट करते हैं। सबसे महत्वपूर्ण बात यह है कि एन्कोडिंग प्रत्येक यूनिकोड चरित्र को व्यक्त करने के लिए उपयोग की जाने वाली बिट्स की संख्या में भिन्न होती है।
उदाहरण के लिए, ASCII एन्कोडिंग सिस्टम प्रति चरित्र केवल 8 बिट्स (1 बाइट) का उपयोग करता है। इस प्रकार यह केवल दो हेक्स अंकों तक कोड बिंदुओं के साथ यूनिकोड वर्णों को एन्कोड कर सकता है (यानी 256 विभिन्न यूनिकोड वर्ण)। यूटीएफ -8 एन्कोडिंग सिस्टम प्रति चरित्र 8 से 32 बिट्स (1 से 4 बाइट्स) का उपयोग करता है, इसलिए यह 8 हेक्टेयर अंकों तक कोड बिंदुओं के साथ यूनिकोड वर्णों को एन्कोड कर सकता है, यानी सब कुछ।
निम्नलिखित कोड चल रहा है:
byteobject = stringobject.encode('utf-8')
byteobject, type(byteobject)
UTF-8 एन्कोडिंग प्रणाली का उपयोग कर एक बाइट स्ट्रिंग में एक यूनिकोड स्ट्रिंग बदल देता है, और b'ant', bytes'
देता है।
ध्यान दें कि यदि आपने एन्कोडिंग सिस्टम के रूप में 'ASCII' का उपयोग किया है, तो आप किसी भी समस्या में नहीं भागेंगे क्योंकि 'चींटी' में सभी कोड बिंदु 1 बाइट के साथ व्यक्त किए जा सकते हैं। लेकिन अगर आपके पास एक यूनिकोड स्ट्रिंग था जिसमें दो हेक्टेयर अंकों से अधिक कोड बिंदु वाले वर्ण होते हैं, तो आपको UnicodeEncodeError
मिल जाएगा।
इसी तरह,
stringobject = byteobject.decode('utf-8')
stringobject, type(stringobject)
आप 'ant', str
देता है।
coolinterview.com जानकारी का एक भयानक स्रोत जैसा दिखता है। मैं इस पर भरोसा नहीं करता। – bames53
"बाइट कोड" आमतौर पर कुछ अलग तरीके से संदर्भित करता है, http://docs.python.org/glossary.html "पायथन स्रोत कोड बाइटकोड में संकलित किया गया है, सीपीथॉन दुभाषिया में पाइथन प्रोग्राम का आंतरिक प्रतिनिधित्व। बाइटकोड भी है .pyc और .pyo फ़ाइलों में कैश किया गया " – dbr
+1 डीबीआर की टिप्पणी। बाइटकोड एक आंतरिक सीपीथन कार्यान्वयन विवरण है जो यूनिकोड से संबंधित नहीं है और आपको शायद चिंता करने की आवश्यकता नहीं है। – bobince