मुझे यूनिकोड, एन्कोडिंग और डिकोडिंग के बारे में बात मिली। लेकिन मुझे समझ में नहीं आता कि एन्कोड फ़ंक्शन स्ट्र प्रकार पर क्यों काम करता है। मुझे उम्मीद है कि यह केवल यूनिकोड प्रकार पर काम करेगी। इसलिए मेरा सवाल यह है कि जब यह यूनिकोड की बजाय स्ट्र पर उपयोग किया जाता है तो एन्कोड का व्यवहार क्या होता है?क्या होता है जब स्ट्रिंग में स्ट्रिंग पर एन्कोड का उपयोग किया जाता है?
उत्तर
पायथन 2 में दो प्रकार के कोडेक उपलब्ध हैं; वे जो str
और unicode
के बीच परिवर्तित होते हैं, और जो str
से str
में परिवर्तित होते हैं। उत्तरार्द्ध के उदाहरण base64
और rot13
कोडेक्स हैं।
str.encode()
विधि का समर्थन करने के लिए मौजूद है उत्तरार्द्ध:
'binary data'.encode('base64')
लेकिन अब है कि यह मौजूद है, लोगों को भी unicode
के लिए प्रयोग कर रहे हैं ->str
कोडेक; एन्कोडिंग केवल unicode
से str
(और दूसरी तरफ डीकोडिंग) से जा सकती है। इनका समर्थन करने के लिए, पाइथन निहित अंततः एन्कोडिंग से पहले, ASCII कोडेक का उपयोग करके str
मान unicode
पर डीकोड करेगा।
संयोग से, जब एक str
का उपयोग कर - एक unicode
वस्तु पर>str
कोडेक, अजगर पहले परोक्ष str
के लिए एक ही ASCII कोडेक का उपयोग कर encodes।
अजगर 3 में, यह एक के द्वारा हल किया गया है) bytes.encode()
और str.decode()
तरीकों को हटाने (याद रखें कि bytes
sorta वर्ष str
और str
नई unicode
) है, और ख) str
ले जाकर - करने के लिए>str
एनकोडिंग codecs
मॉड्यूल , codecs.encode()
और codecs.decode()
फ़ंक्शंस का उपयोग करके।उसी प्रकार के बीच कौन से कोडेक्स बदलते हैं उन्हें भी स्पष्ट और अद्यतन किया गया है, Python Specific Encodings section देखें; ध्यान दें कि 'टेक्स्ट' एन्कोडिंग वहां उल्लेखनीय है, जहां पाइथन 2 में उपलब्ध है, इसके बजाय str
पर एन्कोड करें।
आपके उत्तर के लिए धन्यवाद। इसके अलावा मुझे बेस 64 और rot13 के बारे में पता नहीं था! – Kowalsy
पायथन को पता चलता है कि यह encode
str
प्रकार पर नहीं कर सकता है, इसलिए यह पहले decode
पर कोशिश करता है! यह 'ascii'
कोडेक का उपयोग करता है, जो 0x7f से ऊपर कोडपॉइंट वाले कोई भी वर्ण होने पर विफल हो जाएगा।
यही कारण है कि आप कभी-कभी decode
त्रुटि को देखते हैं जब आप encode
करने का प्रयास कर रहे थे।
नाइटपिक: यह 'sys.getdefaultencoding()' (जो लगभग हमेशा 'ascii'') का उपयोग करता है – wim
@wim इसके लिए धन्यवाद, मुझे यह नहीं पता था - मैंने कभी भी sysgetdefaultencoding' को कुछ भी नहीं देखा है 'ascii' से। –
@MarkRansom: ऐसा इसलिए है क्योंकि 'sys.setdefaultencoding' को '.py.py' द्वारा हटा दिया गया है। 'रीलोड (सीईएस)' इसे वापस लाएगा, लेकिन डिफ़ॉल्ट रूप से कुछ भी सेट कर रहा है लेकिन 'ascii' एक [* बहुत बुरा विचार *] है (https://stackoverflow.com/questions/28657010/dangers-of-sys-setdefaultencodingutf -8)। आप अक्सर 'आयात sys देखते हैं; (सिस) को फिर से लोड; sys.setdefaultencoding (...) 'यूनिकोड समस्याओं के बारे में प्रश्नों पर कार्गो-पंथ। –
पायथन 3 में, एक बाइटस्ट्रिंग एन्कोडिंग बस काम नहीं करता है।
>>> b'hi'.encode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'bytes' object has no attribute 'encode'
अजगर 2 की कोशिश करता सहायक हो जब तुम डिकोडsys.getdefaultencoding()
(आमतौर पर ascii) के साथ स्ट्रिंग और बाद में यह एनकोड करने के लिए एक str
और पहले के प्रयासों में वे encode
कहते हैं।
यही कारण है कि आपको अजीब त्रुटि संदेश मिलता है कि जब आप utf-8 के साथ एन्कोड करने का प्रयास करते हैं तो एसीआईआई के साथ डिकोडिंग संभव नहीं है।
>>> 'hi\xFF'.encode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 2: ordinal not in range(128)
नेड बताते हैं यह बेहतर रहा से, आगे 16:20 से this देखते हैं।
- 1. पायथन स्ट्रिंग स्वरूपण जब स्ट्रिंग में "% s" होता है
- 2. क्या होता है जब प्रक्रिया को फोर्क किया जाता है?
- 3. जावा में संकलन समय पर स्ट्रिंग इंटर्निंग किया जाता है?
- 4. LINQ से SQL का उपयोग तब होता है जब DISTINCT का उपयोग किया जाता है?
- 5. स्ट्रिंग को एन्कोड करना कौन जिम्मेदारी है?
- 6. "स्ट्रिंग" को "स्ट्रिंग" का सरलीकृत संस्करण क्यों माना जाता है?
- 7. क्या एमएस अजाक्स में उपयोग के लिए जावास्क्रिप्ट स्ट्रिंग में .NET स्ट्रिंग को एन्कोड करने का कोई मानक तरीका है?
- 8. StringBuilder.toString() ग्रहण-कंसोल में खाली स्ट्रिंग के रूप में मुद्रित किया जाता है जब बहुत बड़ा होता है?
- 9. असामान्य प्रकार त्रुटि जब [] स्ट्रिंग फ़ील्ड का उपयोग किया जाता है (गो लांग)
- 10. क्या सरणी में स्ट्रिंग का हिस्सा होता है?
- 11. क्या यह स्ट्रिंग बेस 64 है? मैं कैसे बता सकता हूं कि एन्कोडिंग का उपयोग क्या किया जाता है?
- 12. जब कोई स्ट्रिंग स्ट्रिंग नहीं है? जावास्क्रिप्ट
- 13. ["स्ट्रिंग"] क्या होता है। पैक ('एच *') का मतलब है?
- 14. रैपर का उपयोग किया जाता है जब Nlog Callsite गलत होता है
- 15. पायथन स्ट्रिंग एन्कोड विधि
- 16. यूटीएफ -8 गुणों में जावा स्ट्रिंग को एन्कोड किया गया
- 17. क्या सी स्ट्रिंग खाली स्ट्रिंग के साथ खत्म होता है?
- 18. यह डेटाबेस कनेक्शन विफल क्यों होता है जब "अनुप्रयोग नाम = अनुप्रयोग" कनेक्शन स्ट्रिंग में होता है?
- 19. स्ट्रिंग प्रारंभिकरण के दौरान क्या होता है?
- 20. ImmutableObjectAttribute का उपयोग कैसे किया जाता है?
- 21. "जब कक्षा को लोड किया जाता है" वास्तव में क्या होता है?
- 22. स्प्लिट स्ट्रिंग टूट जाता है
- 23. स्ट्रिंगियो का उपयोग कब किया जाता है?
- 24. एचटीएमएल एन्कोड/स्ट्रिंग से कैसे बचें? क्या कोई अंतर्निहित है?
- 25. क्या होता है जब डबल (या फ्लोट) को इन्स में परिवर्तित किया जाता है?
- 26. पाइथन में स्ट्रिंगियो क्या वास्तविकता में उपयोग किया जाता है?
- 27. क्या लिंक का उपयोग डिफ़ॉल्ट ऑर्डर में निर्दिष्ट होता है जब निर्दिष्ट कोई ऑर्डर नहीं किया जाता है?
- 28. जब एक printf में% d का उपयोग किया जाता है तो फ्लोट चर के साथ क्या होता है?
- 29. @JsonProperty प्रॉपर्टी का उपयोग कब किया जाता है और इसके लिए क्या उपयोग किया जाता है?
- 30. जब इसे रद्द किया जाता है तो कार्य में क्या होता है?
एन्कोड और डीकोड किए जाने पर यूनिकोड के साथ आपको क्या लगता है? – kojiro
पायथन 3 का उपयोग करें और अधिकांश भ्रम समाप्त हो जाएगा। – Kupiakos