Python 3.7 - codecs

कोडेक्स - कोडेक रजिस्ट्री और बेस कक्षाएं




python

कोडेक्स - कोडेक रजिस्ट्री और बेस कक्षाएं

स्रोत कोड: Lib/codecs.py

यह मॉड्यूल मानक पायथन कोडेक्स (एनकोडर और डिकोडर) के लिए बेस कक्षाओं को परिभाषित करता है और आंतरिक पायथन कोडक रजिस्ट्री तक पहुंच प्रदान करता है, जो कोडेक और एरर हैंडलिंग लुकअप प्रक्रिया का प्रबंधन करता है। अधिकांश मानक कोडेक पाठ एनकोडिंग होते हैं , जो टेक्स्ट को बाइट्स में एन्कोड करते हैं, लेकिन ऐसे भी कोडेक्स होते हैं, जो टेक्स्ट को टेक्स्ट को और एनकोट्स को बाइट्स को एन्कोड करते हैं। कस्टम कोडक मनमाने ढंग से प्रकारों के बीच एन्कोड और डिकोड कर सकते हैं, लेकिन कुछ मॉड्यूल फीचर्स विशेष रूप से टेक्स्ट एनकोडिंग के साथ, या कोडेक्स के साथ bytes साथ उपयोग करने के लिए प्रतिबंधित हैं।

मॉड्यूल किसी भी कोडेक के साथ एन्कोडिंग और डिकोडिंग के लिए निम्नलिखित कार्यों को परिभाषित करता है:

codecs.encode(obj, encoding='utf-8', errors='strict')

एन्कोडिंग के लिए पंजीकृत कोडेक का उपयोग करते हुए एनकोड को एनकोड करता है

वांछित त्रुटि हैंडलिंग योजना को निर्धारित करने के लिए त्रुटियां दी जा सकती हैं। डिफ़ॉल्ट त्रुटि हैंडलर 'strict' जिसका अर्थ है कि एन्कोडिंग त्रुटियां ValueError (या अधिक कोडेक विशिष्ट उपवर्ग, जैसे कि UnicodeEncodeError ) को UnicodeEncodeError । कोडेक त्रुटि हैंडलिंग पर अधिक जानकारी के लिए कोडेक बेस क्लासेस देखें।

codecs.decode(obj, encoding='utf-8', errors='strict')

डिकोडिंग एन्कोडिंग के लिए पंजीकृत कोडेक का उपयोग करते हुए obj

वांछित त्रुटि हैंडलिंग योजना को निर्धारित करने के लिए त्रुटियां दी जा सकती हैं। डिफ़ॉल्ट त्रुटि हैंडलर 'strict' जिसका अर्थ है कि डिकोडिंग त्रुटियां ValueError (या एक अधिक कोडेक विशिष्ट उप-वर्ग, जैसे कि UnicodeDecodeError ) UnicodeDecodeError । कोडेक त्रुटि हैंडलिंग पर अधिक जानकारी के लिए कोडेक बेस क्लासेस देखें।

प्रत्येक कोडेक के लिए पूर्ण विवरण को भी सीधे देखा जा सकता है:

codecs.lookup(encoding)

पायथन कोडक रजिस्ट्री में कोडेक जानकारी को CodecInfo और नीचे दिए गए CodecInfo एक कोडेक CodecInfo वस्तु लौटाता है।

रजिस्ट्री के कैश में एन्कोडिंग को सबसे पहले देखा जाता है। यदि नहीं मिला है, तो पंजीकृत खोज कार्यों की सूची स्कैन की जाती है। यदि कोई CodecInfo ऑब्जेक्ट नहीं मिला है, तो एक LookupError उठाया जाता है। अन्यथा, CodecInfo ऑब्जेक्ट कैश में संग्रहीत किया जाता है और कॉलर को वापस कर दिया जाता है।

class codecs.CodecInfo(encode, decode, streamreader=None, streamwriter=None, incrementalencoder=None, incrementaldecoder=None, name=None)

कोडेक रजिस्ट्री को देखते समय कोडेक विवरण। निर्माता तर्क एक ही नाम की विशेषताओं में संग्रहीत हैं:

name

एन्कोडिंग का नाम।

encode
decode

स्टेटलेस एन्कोडिंग और डिकोडिंग फ़ंक्शंस। ये फ़ंक्शंस या विधियाँ होनी चाहिए जिनका decode() उदाहरण encode() और कोडेक उदाहरणों का decode() encode() देखें) के समान इंटरफ़ेस है । कार्यों या विधियों को एक स्थिर मोड में काम करने की उम्मीद है।

incrementalencoder
incrementaldecoder

वृद्धिशील एनकोडर और डिकोडर कक्षाएं या कारखाने के कार्य। इन्हें क्रमशः बेस IncrementalEncoder और IncrementalDecoder द्वारा परिभाषित इंटरफेस प्रदान करना है। वृद्धिशील कोडेक राज्य बनाए रख सकते हैं।

streamwriter
streamreader

स्ट्रीम लेखक और पाठक वर्ग या कारखाने के कार्य। इन्हें क्रमशः आधार वर्गों StreamWriter और StreamReader द्वारा परिभाषित इंटरफेस प्रदान करना है। स्ट्रीम कोडेक राज्य बनाए रख सकते हैं।

विभिन्न कोडेक घटकों तक पहुंच को सरल बनाने के लिए, मॉड्यूल इन अतिरिक्त कार्यों को प्रदान करता है जो कोडेक लुकअप के लिए lookup() उपयोग करते हैं:

codecs.getencoder(encoding)

दिए गए एन्कोडिंग के लिए कोडेक देखें और इसके एनकोडर फ़ंक्शन को वापस करें।

एन्कोडिंग नहीं मिल LookupError की स्थिति में एक LookupError उठाता है।

codecs.getdecoder(encoding)

दिए गए एन्कोडिंग के लिए कोडेक देखें और इसके डिकोडर फ़ंक्शन को वापस करें।

एन्कोडिंग नहीं मिल LookupError की स्थिति में एक LookupError उठाता है।

codecs.getincrementalencoder(encoding)

दिए गए एन्कोडिंग के लिए कोडेक देखें और उसके वृद्धिशील एनकोडर वर्ग या फैक्टरी फ़ंक्शन को वापस करें।

यदि एन्कोडिंग नहीं मिल रहा है या कोडेक एक वृद्धिशील एनकोडर का समर्थन नहीं करता है, तो LookupError उठाता है।

codecs.getincrementaldecoder(encoding)

दिए गए एन्कोडिंग के लिए कोडेक देखें और उसके वृद्धिशील विकोडक वर्ग या कारखाने फ़ंक्शन को वापस करें।

यदि एन्कोडिंग नहीं मिल पा रहा है या कोडेक एक वृद्धिशील विकोडक का समर्थन नहीं करता है, तो LookupError उठाता है।

codecs.getreader(encoding)

दिए गए एन्कोडिंग के लिए कोडेक देखें और उसके StreamReader क्लास या फ़ैक्टरी फ़ंक्शन को वापस करें।

एन्कोडिंग नहीं मिल LookupError की स्थिति में एक LookupError उठाता है।

codecs.getwriter(encoding)

दिए गए एन्कोडिंग के लिए कोडेक देखें और इसके StreamWriter वर्ग या फ़ैक्टरी फ़ंक्शन को वापस करें।

एन्कोडिंग नहीं मिल LookupError की स्थिति में एक LookupError उठाता है।

कस्टम कोडेक एक उपयुक्त कोडेक खोज फ़ंक्शन को पंजीकृत करके उपलब्ध कराया जाता है:

codecs.register(search_function)

एक कोडेक खोज फ़ंक्शन पंजीकृत करें। सभी निचले मामलों के अक्षरों में एन्कोडिंग नाम होने के कारण खोज फ़ंक्शंस में एक तर्क लेने की उम्मीद की जाती है, और एक CodecInfo ऑब्जेक्ट वापस किया CodecInfo है। यदि खोज फ़ंक्शन किसी दिए गए एन्कोडिंग को नहीं खोज सकता है, तो उसे None लौटना चाहिए।

ध्यान दें

खोज फ़ंक्शन पंजीकरण वर्तमान में प्रतिवर्ती नहीं है, जिससे कुछ मामलों में समस्याएं हो सकती हैं, जैसे इकाई परीक्षण या मॉड्यूल पुनः लोड करना।

हालांकि अंतर्निहित open() और संबंधित io मॉड्यूल एन्कोडेड टेक्स्ट फ़ाइलों के साथ काम करने के लिए अनुशंसित दृष्टिकोण हैं, यह मॉड्यूल अतिरिक्त उपयोगिता फ़ंक्शंस और कक्षाएं प्रदान करता है जो बाइनरी फ़ाइलों के साथ काम करते समय कोडेक्स की एक व्यापक श्रेणी का उपयोग करने की अनुमति देता है:

codecs.open(filename, mode='r', encoding=None, errors='strict', buffering=1)

दिए गए मोड का उपयोग कर एक एन्कोडेड फ़ाइल खोलें और पारदर्शी एन्कोडिंग / डिकोडिंग प्रदान करते हुए StreamReaderWriter का एक उदाहरण लौटाएं। डिफ़ॉल्ट फ़ाइल मोड 'r' , जिसका अर्थ है फ़ाइल को रीड मोड में खोलना।

ध्यान दें

अंडरकोड एन्कोडेड फाइलें हमेशा बाइनरी मोड में खोली जाती हैं। पढ़ने और लिखने पर '\n' का कोई स्वचालित रूपांतरण नहीं होता है। मोड तर्क किसी भी बाइनरी मोड को अंतर्निहित open() फ़ंक्शन के लिए स्वीकार्य हो सकता है; 'b' अपने आप जुड़ जाता है।

एन्कोडिंग फ़ाइल के लिए उपयोग की जाने वाली एन्कोडिंग को निर्दिष्ट करती है। किसी भी एन्कोडिंग जो बाइट्स से एनकोडिंग और डिकोड करने की अनुमति है, और फ़ाइल विधियों द्वारा समर्थित डेटा प्रकार उपयोग किए गए कोडेक पर निर्भर करता है।

त्रुटि हैंडलिंग को परिभाषित करने के लिए त्रुटियां दी जा सकती हैं। यह 'strict' लिए चूक करता है जिसके कारण एन्कोडिंग त्रुटि उत्पन्न होने पर ValueError को उठाया जाता है।

बफ़रिंग का वही अर्थ है जो बिल्ट-इन open() फ़ंक्शन के लिए है। यह लाइन बफ़र्ड करने के लिए डिफ़ॉल्ट है।

codecs.EncodedFile(file, data_encoding, file_encoding=None, errors='strict')

एक StreamRecoder उदाहरण लौटें, फ़ाइल का एक लिपटा हुआ संस्करण जो पारदर्शी ट्रांसकोडिंग प्रदान करता है। जब लिपटे हुए संस्करण को बंद किया जाता है तो मूल फ़ाइल बंद हो जाती है।

लिपटे फ़ाइल को लिखा गया डेटा दिए गए data_encoding के अनुसार डिकोड किया गया है और फिर file_encoding का उपयोग करके मूल फ़ाइल को बाइट्स के रूप में लिखा गया है। मूल फ़ाइल से पढ़े गए बाइट्स file_encoding के अनुसार डिकोड किए जाते हैं, और परिणाम data_encoding का उपयोग करके एन्कोड किया जाता है

यदि file_encoding नहीं दिया गया है, तो यह data_encoding को चूक देता है

त्रुटि हैंडलिंग को परिभाषित करने के लिए त्रुटियां दी जा सकती हैं। यह 'strict' लिए डिफॉल्ट करता है, जिसके कारण एन्कोडिंग त्रुटि होने पर ValueError को उठाया जाता है।

codecs.iterencode(iterator, encoding, errors='strict', **kwargs)

एक वृद्धिशील एनकोडर का उपयोग करने के लिए पुनरावृति पुनरावृत्त इनपुट द्वारा सांकेतिक शब्दों में बदलना। यह फ़ंक्शन एक generator त्रुटि तर्क (साथ ही किसी अन्य कीवर्ड तर्क) को वृद्धिशील एनकोडर के माध्यम से पारित किया जाता है।

इस फ़ंक्शन के लिए यह आवश्यक है कि कोडक टेक्स्ट str ऑब्जेक्ट्स को एनकोड करे। इसलिए यह बाइट्स-से-बाइट एन्कोडर जैसे base64_codec लिए समर्थन नहीं करता है।

codecs.iterdecode(iterator, encoding, errors='strict', **kwargs)

एक वृद्धिशील विकोडक का उपयोग करता है पुनरावृति पुनरावृत्त द्वारा प्रदान किए गए इनपुट को पुनरावृत्त करना। यह फ़ंक्शन एक generator त्रुटि तर्क (साथ ही कोई अन्य कीवर्ड तर्क) वृद्धिशील विकोडक के माध्यम से पारित किया जाता है।

इस फ़ंक्शन के लिए आवश्यक है कि कोडक bytes ऑब्जेक्ट्स को डिकोड करे। इसलिए यह rot_13 जैसे टेक्स्ट-टू-टेक्स्ट एन्कोडर का समर्थन नहीं करता है, हालांकि rot_13 का उपयोग iterencode() साथ समान रूप से किया जा सकता है।

मॉड्यूल निम्नलिखित स्थिरांक भी प्रदान करता है जो प्लेटफ़ॉर्म आश्रित फ़ाइलों को पढ़ने और लिखने के लिए उपयोगी होते हैं:

codecs.BOM
codecs.BOM_BE
codecs.BOM_LE
codecs.BOM_UTF8
codecs.BOM_UTF16
codecs.BOM_UTF16_BE
codecs.BOM_UTF16_LE
codecs.BOM_UTF32
codecs.BOM_UTF32_BE
codecs.BOM_UTF32_LE

ये स्थिरांक विभिन्न बाइट अनुक्रमों को परिभाषित करते हैं, कई एनकोडिंग के लिए यूनिकोड बाइट ऑर्डर मार्क्स (BOMs) होते हैं। वे यूटीएफ -16 और यूटीएफ -32 डेटा धाराओं में उपयोग किए गए बाइट ऑर्डर को इंगित करने के लिए उपयोग करते हैं, और यूटीएफ -8 में एक यूनिकोड हस्ताक्षर के रूप में। BOM_UTF16 या तो BOM_UTF16_BE या BOM_UTF16_LE प्लेटफॉर्म के मूल बाइट ऑर्डर के आधार पर, BOM BOM_UTF16 लिए एक उपनाम है, BOM_LE लिए BOM_UTF16_LE और BOM_BE लिए BOM_UTF16_BE । अन्य लोग UTF-8 और UTF-32 एन्कोडिंग में BOM का प्रतिनिधित्व करते हैं।

कोडेक बेस क्लासेस

codecs मॉड्यूल बेस कक्षाओं के एक सेट को परिभाषित करता है जो कोडेक ऑब्जेक्ट्स के साथ काम करने के लिए इंटरफेस को परिभाषित करता है, और कस्टम कोडेक कार्यान्वयन के आधार के रूप में भी इस्तेमाल किया जा सकता है।

प्रत्येक कोडेक को पायथन में कोडेक के रूप में प्रयोग करने योग्य बनाने के लिए चार इंटरफेस को परिभाषित करना होता है: स्टेटलेस एनकोडर, स्टेटलेस डिकोडर, स्ट्रीम रीडर और स्ट्रीम लेखक। स्ट्रीम रीडर और लेखक आमतौर पर फ़ाइल प्रोटोकॉल को लागू करने के लिए स्टेटलेस एनकोडर / डिकोडर का पुन: उपयोग करते हैं। कोडेक लेखकों को यह भी परिभाषित करने की आवश्यकता है कि कोडेक एन्कोडिंग और डिकोडिंग त्रुटियों को कैसे संभालेगा।

त्रुटि हैंडलर

त्रुटि से निपटने को सरल और मानकीकृत करने के लिए, कोडक अलग-अलग त्रुटि हैंडलिंग योजनाओं को त्रुटियों स्ट्रिंग तर्क को स्वीकार करके लागू कर सकते हैं । निम्न स्ट्रिंग मान सभी मानक पायथन कोडेक्स द्वारा परिभाषित और कार्यान्वित किए जाते हैं:

मूल्य अर्थ
'strict' UnicodeError (या एक उपवर्ग) उठाएँ; यह डिफ़ॉल्ट है। strict_errors() लागू किया strict_errors()
'ignore' विकृत डेटा पर ध्यान न दें और आगे की सूचना के बिना जारी रखें। ignore_errors() में लागू किया गया।

निम्नलिखित त्रुटि हैंडलर केवल पाठ एन्कोडिंग पर लागू होते हैं:

मूल्य अर्थ
'replace' एक उपयुक्त प्रतिस्थापन मार्कर के साथ बदलें; पायथन डिकोड में निर्मित कोडेक्स के लिए आधिकारिक U+FFFD REPLACEMENT CHARACTER का उपयोग करेगा, और '?' एन्कोडिंग पर। replace_errors() में लागू किया गया।
'xmlcharrefreplace' उचित XML वर्ण संदर्भ (केवल एन्कोडिंग के लिए) के साथ बदलें। xmlcharrefreplace_errors() में लागू किया गया।
'backslashreplace' बैकस्लेस्ड एस्केप दृश्यों के साथ बदलें। backslashreplace_errors() में लागू किया गया।
'namereplace' \N{...} बच दृश्यों (केवल एन्कोडिंग के लिए) के साथ बदलें। namereplace_errors() में लागू किया गया।
'surrogateescape' डिकोडिंग पर, अलग-अलग सरोगेट कोड के साथ बाइट को U+DC80 से U+DCFF । यह कोड तब वापस उसी बाइट में बदल जाएगा जब डेटा को एन्कोडिंग करते समय 'surrogateescape' त्रुटि हैंडलर का उपयोग किया जाता है। (अधिक के लिए पीईपी 383 देखें।)

इसके अलावा, निम्नलिखित त्रुटि हैंडलर दिए गए कोडेक्स के लिए विशिष्ट है:

मूल्य कोडेक्स अर्थ
'surrogatepass' utf-8, utf-16, utf-32, utf-16-be, utf-16-le, utf-32-be, utf-32-le एन्कोडिंग और सरोगेट कोड के डिकोडिंग की अनुमति दें। ये कोडेक्स आमतौर पर सरोगेट्स की उपस्थिति को एक त्रुटि के रूप में मानते हैं।

संस्करण 3.1 में नया: 'surrogateescape' और 'surrogatepass' त्रुटि हैंडलर।

संस्करण 3.4 में परिवर्तित: 'surrogatepass' त्रुटि हैंडलर अब utf-16 * और utf-32 * कोडेक्स के साथ काम करता है।

संस्करण 3.5 में नया: 'namereplace' त्रुटि हैंडलर।

संस्करण 3.5 में परिवर्तित: 'backslashreplace' त्रुटि हैंडलर अब डीकोडिंग और अनुवाद के साथ काम करता है।

अनुमत मानों के सेट को एक नया नाम त्रुटि हैंडलर पंजीकृत करके बढ़ाया जा सकता है:

codecs.register_error(name, error_handler)

नाम के तहत त्रुटि हैंडलिंग फ़ंक्शन error_handler पंजीकृत करें त्रुटि_हैंडलर तर्क को त्रुटि के मामले में एन्कोडिंग और डिकोडिंग के दौरान कहा जाएगा, जब नाम त्रुटि पैरामीटर के रूप में निर्दिष्ट किया जाता है।

एन्कोडिंग के लिए, error_handler को एक UnicodeEncodeError उदाहरण के साथ कहा जाएगा, जिसमें त्रुटि के स्थान के बारे में जानकारी है। त्रुटि हैंडलर को या तो यह या एक अलग अपवाद उठाना चाहिए, या इनपुट के अनएन्कोडेबल भाग के लिए एक प्रतिस्थापन के साथ एक टपल लौटना चाहिए और एक ऐसी स्थिति जहां एन्कोडिंग जारी रहना चाहिए। प्रतिस्थापन या तो str या bytes हो सकता है। यदि प्रतिस्थापन बाइट्स है, तो एनकोडर बस उन्हें आउटपुट बफर में कॉपी करेगा। यदि प्रतिस्थापन एक स्ट्रिंग है, तो एनकोडर प्रतिस्थापन को एन्कोड करेगा। निर्दिष्ट स्थान पर मूल इनपुट पर एन्कोडिंग जारी है। नकारात्मक स्थिति मानों को इनपुट स्ट्रिंग के अंत के सापेक्ष माना जाएगा। यदि परिणामी स्थिति बाउंड से बाहर है, तो IndexError को उठाया जाएगा।

डिकोडिंग और अनुवाद करने का कार्य समान रूप से होता है, सिवाय UnicodeDecodeError या UnicodeTranslateError , UnicodeTranslateError को हैंडलर को पास किया जाएगा और त्रुटि हैंडलर से प्रतिस्थापन सीधे आउटपुट में डाल दिया जाएगा।

पहले पंजीकृत त्रुटि हैंडलर (मानक त्रुटि हैंडलर सहित) को नाम से देखा जा सकता है:

codecs.lookup_error(name)

पहले नाम के तहत पंजीकृत त्रुटि हैंडलर लौटें।

हैंडलर नहीं मिल LookupError की स्थिति में LookupError उठाता है।

निम्न मानक त्रुटि हैंडलर को मॉड्यूल स्तर के कार्यों के रूप में भी उपलब्ध कराया जाता है:

codecs.strict_errors(exception)

'strict' त्रुटि हैंडलिंग को लागू करता है: प्रत्येक एन्कोडिंग या डिकोडिंग त्रुटि एक UnicodeError जन्म देती है।

codecs.replace_errors(exception)

'replace' त्रुटि हैंडलिंग (केवल पाठ एन्कोडिंग के लिए): प्रतिस्थापन '?' एन्कोडिंग त्रुटियों के लिए (कोडक द्वारा कूटबद्ध किया जाना है), और त्रुटियों के लिए '\ufffd' (यूनिकोड रिप्लेसमेंट चरित्र)।

codecs.ignore_errors(exception)

'ignore' एरर हैंडलिंग को इम्प्लीमेंट करता है: विकृत डेटा को अनदेखा किया जाता है और एन्कोडिंग या डिकोडिंग को बिना किसी नोटिस के जारी रखा जाता है।

codecs.xmlcharrefreplace_errors(exception)

'xmlcharrefreplace' त्रुटि हैंडलिंग (केवल पाठ एन्कोडिंग के साथ एन्कोडिंग के लिए) को लागू करता है: अयोग्य वर्ण को एक उपयुक्त XML वर्ण संदर्भ द्वारा प्रतिस्थापित किया जाता है।

codecs.backslashreplace_errors(exception)

'backslashreplace' एरर हैंडलिंग (केवल टेक्स्ट एनकोडिंग के लिए) को लागू करता है: विकृत डेटा को बैकस्लेस्ड एस्केप सीक्वेंस द्वारा बदल दिया जाता है।

codecs.namereplace_errors(exception)

'namereplace' एरर हैंडलिंग (केवल टेक्स्ट एनकोडिंग के साथ एन्कोडिंग के लिए) को लागू करता है: अनएन्कोडेबल कैरेक्टर को a \N{...} एस्केप अनुक्रम से बदल दिया जाता है।

संस्करण 3.5 में नया।

स्टेटलेस एनकोडिंग और डिकोडिंग

आधार Codec क्लास इन विधियों को परिभाषित करता है जो स्टेटलेस एनकोडर और डिकोडर के फ़ंक्शन इंटरफेस को परिभाषित करते हैं:

Codec.encode(input[, errors])

ऑब्जेक्ट इनपुट को एन्कोड करता है और एक टपल (आउटपुट ऑब्जेक्ट, लम्बाई खपत) देता है। उदाहरण के लिए, टेक्स्ट एन्कोडिंग किसी विशिष्ट वर्ण सेट एन्कोडिंग (जैसे, cp1252 या iso-8859-1 ) का उपयोग करके एक स्ट्रिंग ऑब्जेक्ट को बाइट्स ऑब्जेक्ट में परिवर्तित करता है।

त्रुटि तर्क लागू करने के लिए त्रुटि हैंडलिंग को परिभाषित करता है। यह 'strict' हैंडलिंग से चूकता है।

विधि Codec उदाहरण में स्थिति को संग्रहीत नहीं कर सकती है। StreamWriter उपयोग करें जो एन्कोडिंग को कुशल बनाने के लिए राज्य को रखना पड़ता है।

एनकोडर को शून्य लंबाई इनपुट को संभालने में सक्षम होना चाहिए और इस स्थिति में आउटपुट ऑब्जेक्ट प्रकार का एक खाली ऑब्जेक्ट वापस करना चाहिए।

Codec.decode(input[, errors])

ऑब्जेक्ट इनपुट को डिकोड करता है और एक ट्यूपल (आउटपुट ऑब्जेक्ट, खपत की गई लंबाई) देता है। उदाहरण के लिए, एक पाठ एन्कोडिंग के लिए , डिकोडिंग एक विशेष वर्ण सेट एन्कोडिंग का उपयोग करके एन्कोडेड बाइट ऑब्जेक्ट को स्ट्रिंग ऑब्जेक्ट में कनवर्ट करता है।

पाठ एन्कोडिंग और बाइट्स-टू-बाइट कोडेक्स के लिए, इनपुट एक बाइट्स ऑब्जेक्ट या एक होना चाहिए जो रीड-ओनली बफर इंटरफ़ेस प्रदान करता है - उदाहरण के लिए, बफर ऑब्जेक्ट्स और मेमोरी मैप्ड फाइलें।

त्रुटि तर्क लागू करने के लिए त्रुटि हैंडलिंग को परिभाषित करता है। यह 'strict' हैंडलिंग से चूकता है।

विधि Codec उदाहरण में स्थिति को संग्रहीत नहीं कर सकती है। StreamReader उपयोग करें जो डिकोडिंग को कुशल बनाने के लिए राज्य को रखना पड़ता है।

डीकोडर शून्य लंबाई इनपुट को संभालने में सक्षम होना चाहिए और इस स्थिति में आउटपुट ऑब्जेक्ट प्रकार का एक खाली ऑब्जेक्ट वापस करना चाहिए।

वृद्धिशील एन्कोडिंग और डिकोडिंग

IncrementalEncoder और IncrementalDecoder कक्षाएं वृद्धिशील एन्कोडिंग और डिकोडिंग के लिए मूल इंटरफ़ेस प्रदान करती हैं। एन्कोडिंग / डिकोडिंग इनपुट को स्टेटलेस एनकोडर / डिकोडर फ़ंक्शन के लिए एक कॉल के साथ नहीं किया जाता है, लेकिन encode() / decode() वृद्धिशील एनकोडर / डिकोडर की विधि के लिए कई कॉल के साथ। वृद्धिशील एनकोडर / डिकोडर विधि कॉल के दौरान एन्कोडिंग / डिकोडिंग प्रक्रिया का ट्रैक रखता है।

encode() / decode() विधि के लिए कॉल का सम्मिलित आउटपुट एक समान है जैसे कि सभी एकल इनपुट एक में शामिल हो गए थे, और इस इनपुट को एन्कोडेड किया गया था / स्टेटलेस एनकोडर / डिकोडर के साथ डिकोड किया गया था।

वृद्धिशील वस्तु

IncrementalEncoder वर्ग का उपयोग कई चरणों में एक इनपुट एन्कोडिंग के लिए किया जाता है। यह निम्नलिखित विधियों को परिभाषित करता है जो कि प्रत्येक वृद्धिशील एनकोडर को पायथन कोडेक रजिस्ट्री के साथ संगत होने के लिए परिभाषित करना चाहिए।

class codecs.IncrementalEncoder(errors='strict')

एक IncrementalEncoder उदाहरण के लिए निर्माता।

सभी वृद्धिशील एन्कोडर को यह कंस्ट्रक्टर इंटरफ़ेस प्रदान करना होगा। वे अतिरिक्त कीवर्ड तर्क जोड़ने के लिए स्वतंत्र हैं, लेकिन केवल यहाँ परिभाषित लोग पायथन कोडेक रजिस्ट्री द्वारा उपयोग किए जाते हैं।

IncrementalEncoder त्रुटियों कीवर्ड तर्क प्रदान करके विभिन्न त्रुटि हैंडलिंग योजनाओं को लागू कर सकता है। संभावित मानों के लिए त्रुटि हैंडलर देखें।

त्रुटियों का तर्क उसी नाम की विशेषता को सौंपा जाएगा। इस विशेषता को असाइन करना IncrementalEncoder ऑब्जेक्ट के जीवनकाल के दौरान विभिन्न त्रुटि हैंडलिंग रणनीतियों के बीच स्विच करना संभव बनाता है।

encode(object[, final])

ऑब्जेक्ट को एनकोड करता है (एनकोडर की वर्तमान स्थिति को ध्यान में रखते हुए) और परिणामी एन्कोड की गई वस्तु को लौटाता है। यदि यह encode() करने के लिए अंतिम कॉल है encode() अंतिम सत्य होना चाहिए (डिफ़ॉल्ट गलत है)।

reset()

प्रारंभिक अवस्था में एनकोडर को रीसेट करें। आउटपुट को छोड़ दिया गया है: कॉल .encode(object, final=True) , यदि आवश्यक हो तो एक खाली बाइट या टेक्स्ट स्ट्रिंग पास करना, एनकोडर को रीसेट करना और आउटपुट प्राप्त करना।

getstate()

एनकोडर की वर्तमान स्थिति को लौटाएं जो पूर्णांक होना चाहिए। कार्यान्वयन सुनिश्चित करना चाहिए कि 0 सबसे सामान्य स्थिति है। (राज्य जो पूर्णांक से अधिक जटिल होते हैं, उन्हें राज्य को अचयनित / अभिषेक करके और परिणामी स्ट्रिंग के बाइट को पूर्णांक में बदलकर पूर्णांक में परिवर्तित किया जा सकता है)।

setstate(state)

एनकोडर की स्थिति को राज्य में सेट करें। राज्य एक एनकोडर राज्य होना चाहिए जिसे getstate() द्वारा लौटाया गया है।

इंक्रीमेंटलडेकोडर ऑब्जेक्ट्स

IncrementalDecoder वर्ग का उपयोग एक इनपुट को कई चरणों में डिकोड करने के लिए किया जाता है। यह निम्नलिखित तरीकों को परिभाषित करता है जो कि प्रत्येक वृद्धिशील विकोडक को पाइथन कोडक रजिस्ट्री के साथ संगत होने के लिए परिभाषित करना चाहिए।

class codecs.IncrementalDecoder(errors='strict')

एक IncrementalDecoder उदाहरण के लिए निर्माता।

सभी वृद्धिशील डिकोडर्स को यह कंस्ट्रक्टर इंटरफ़ेस प्रदान करना होगा। वे अतिरिक्त कीवर्ड तर्क जोड़ने के लिए स्वतंत्र हैं, लेकिन केवल यहाँ परिभाषित लोग पायथन कोडेक रजिस्ट्री द्वारा उपयोग किए जाते हैं।

IncrementalDecoder त्रुटियों कीवर्ड तर्क प्रदान करके विभिन्न त्रुटि हैंडलिंग योजनाओं को लागू कर सकता है। संभावित मानों के लिए त्रुटि हैंडलर देखें।

त्रुटियों का तर्क उसी नाम की विशेषता को सौंपा जाएगा। इस विशेषता को असाइन करना IncrementalDecoder ऑब्जेक्ट के जीवनकाल के दौरान विभिन्न त्रुटि हैंडलिंग रणनीतियों के बीच स्विच करना संभव बनाता है।

decode(object[, final])

ऑब्जेक्ट को डिकोड करता है (डिकोडर की वर्तमान स्थिति को ध्यान में रखता है) और परिणामी डिकोड की गई वस्तु को लौटाता है। यदि यह decode() करने के लिए अंतिम कॉल है decode() अंतिम सत्य होना चाहिए (डिफ़ॉल्ट गलत है)। यदि अंतिम सत्य है तो डिकोडर को पूरी तरह से इनपुट को डीकोड करना चाहिए और सभी बफ़र्स को फ्लश करना चाहिए। यदि यह संभव नहीं है (उदाहरण के लिए इनपुट के अंत में अपूर्ण बाइट अनुक्रमों के कारण) तो इसे स्टेटलेस केस की तरह ही त्रुटि से निपटने की शुरुआत करनी चाहिए (जो अपवाद को बढ़ा सकता है)।

reset()

डिकोडर को प्रारंभिक अवस्था में रीसेट करें।

getstate()

डिकोडर की वर्तमान स्थिति लौटाएं। यह दो आइटमों के साथ एक टपल होना चाहिए, पहले बफर होना चाहिए जिसमें अभी भी अनिर्धारित इनपुट हो। दूसरा पूर्णांक होना चाहिए और अतिरिक्त राज्य जानकारी हो सकती है। (कार्यान्वयन सुनिश्चित करना चाहिए कि 0 सबसे सामान्य अतिरिक्त जानकारी है।) यदि यह अतिरिक्त राज्य जानकारी 0 है, तो डिकोडर को उस राज्य में सेट करना संभव है, जिसके पास कोई इनपुट बफ़र नहीं है और अतिरिक्त राज्य जानकारी के रूप में 0 , ताकि डिकोडर को पहले बफ़र किए गए इनपुट को खिलाने से वह बिना किसी आउटपुट के पिछले स्थिति में वापस आ जाता है। (पूर्ण राज्य की जानकारी जो पूर्णांकों की तुलना में अधिक जटिल है, सूचना को मार्शलींग / पिकिंग द्वारा एक पूर्णांक में परिवर्तित किया जा सकता है और परिणामी स्ट्रिंग के बाइट्स को पूर्णांक में बदल सकता है।)

setstate(state)

एनकोडर की स्थिति को राज्य में सेट करें। राज्य को getstate() द्वारा लौटाए जाने वाला डिकोडर राज्य होना चाहिए।

स्ट्रीम एन्कोडिंग और डिकोडिंग

StreamWriter और StreamReader कक्षाएं जेनेरिक वर्किंग इंटरफेस प्रदान करती हैं जिनका उपयोग नए एन्कोडिंग सबमॉड्यूल को बहुत आसानी से लागू करने के लिए किया जा सकता है। यह कैसे किया जाता है, इसके एक उदाहरण के लिए encodings.utf_8 देखें।

StreamWriter ऑब्जेक्ट

StreamWriter वर्ग Codec का एक उपवर्ग है और निम्नलिखित विधियों को परिभाषित करता है जिसे प्रत्येक स्ट्रीम लेखक को पाइथन कोडक रजिस्ट्री के साथ संगत होने के लिए परिभाषित करना चाहिए।

class codecs.StreamWriter(stream, errors='strict')

एक StreamWriter उदाहरण के लिए निर्माता।

सभी स्ट्रीम लेखकों को यह कंस्ट्रक्टर इंटरफ़ेस प्रदान करना होगा। वे अतिरिक्त कीवर्ड तर्क जोड़ने के लिए स्वतंत्र हैं, लेकिन केवल यहाँ परिभाषित लोग पायथन कोडेक रजिस्ट्री द्वारा उपयोग किए जाते हैं।

स्ट्रीम तर्क पाठ या बाइनरी डेटा लिखने के लिए एक फ़ाइल की तरह खुली होनी चाहिए, जो विशिष्ट कोडेक के लिए उपयुक्त हो।

StreamWriter त्रुटियों कीवर्ड तर्क प्रदान करके विभिन्न त्रुटि हैंडलिंग योजनाओं को लागू कर सकता है। त्रुटि हैंडल देखें मानक त्रुटि हैंडलर के लिए अंतर्निहित स्ट्रीम कोडेक समर्थन कर सकता है।

त्रुटियों का तर्क उसी नाम की विशेषता को सौंपा जाएगा। इस विशेषता को असाइन करने से StreamWriter ऑब्जेक्ट के जीवनकाल के दौरान विभिन्न त्रुटि हैंडलिंग रणनीतियों के बीच स्विच करना संभव हो जाता है।

write(object)

ऑब्जेक्ट की सामग्री को स्ट्रीम में एन्कोडेड लिखता है।

writelines(list)

स्ट्रिंग्स के संक्षिप्त सूची को धारा में लिखते हैं (संभवतः write() विधि का पुन: उपयोग करके)। मानक बाइट्स-दर-बाइट कोडेक्स इस पद्धति का समर्थन नहीं करते हैं।

reset()

राज्य रखने के लिए उपयोग किए गए कोडेक बफ़र्स को फ्लश और रीसेट करता है।

इस पद्धति को कॉल करने से यह सुनिश्चित होना चाहिए कि आउटपुट पर डेटा को एक साफ स्थिति में रखा गया है जो राज्य को पुनर्प्राप्त करने के लिए पूरे स्ट्रीम को फिर से व्यवस्थित किए बिना नए नए डेटा को जोड़ने की अनुमति देता है।

उपरोक्त विधियों के अलावा, StreamWriter को अंतर्निहित स्ट्रीम से अन्य सभी विधियों और विशेषताओं को भी इनहेरिट करना होगा।

स्ट्रीमरएडर ऑब्जेक्ट्स

StreamReader वर्ग Codec का एक उपवर्ग है और निम्नलिखित विधियों को परिभाषित करता है जिसे प्रत्येक स्ट्रीम रीडर को पायथन कोडेक रजिस्ट्री के साथ संगत होने के लिए परिभाषित करना चाहिए।

class codecs.StreamReader(stream, errors='strict')

एक StreamReader उदाहरण के लिए निर्माता।

सभी स्ट्रीम पाठकों को यह कंस्ट्रक्टर इंटरफ़ेस प्रदान करना होगा। वे अतिरिक्त कीवर्ड तर्क जोड़ने के लिए स्वतंत्र हैं, लेकिन केवल यहाँ परिभाषित लोग पायथन कोडेक रजिस्ट्री द्वारा उपयोग किए जाते हैं।

धारा तर्क पाठ या बाइनरी डेटा को पढ़ने के लिए एक फ़ाइल की तरह खुली होनी चाहिए, जो कि विशिष्ट कोडेक के लिए उपयुक्त हो।

StreamReader त्रुटि कीवर्ड तर्क प्रदान करके विभिन्न त्रुटि हैंडलिंग योजनाओं को लागू कर सकता है। त्रुटि हैंडल देखें मानक त्रुटि हैंडलर के लिए अंतर्निहित स्ट्रीम कोडेक समर्थन कर सकता है।

त्रुटियों का तर्क उसी नाम की विशेषता को सौंपा जाएगा। इस विशेषता को असाइन करने से StreamReader ऑब्जेक्ट के जीवनकाल के दौरान विभिन्न त्रुटि हैंडलिंग रणनीतियों के बीच स्विच करना संभव हो जाता है।

त्रुटियों के तर्क के लिए अनुमत मानों के समूह को register_error() साथ बढ़ाया जा सकता है।

read([size[, chars[, firstline]]])

स्ट्रीम से डेटा को डिकोड करता है और परिणामी वस्तु को वापस करता है।

वर्ण तर्क डीकोड कोड की संख्या या बाइट्स को वापस लौटने का संकेत देता है। read() विधि अनुरोध के बजाय कभी भी अधिक डेटा नहीं लौटाएगी, लेकिन अगर पर्याप्त उपलब्ध नहीं है, तो यह कम वापस आ सकता है।

आकार तर्क डिकोडिंग के लिए पढ़ने के लिए एन्कोडेड बाइट्स या कोड बिंदुओं की अनुमानित अधिकतम संख्या को इंगित करता है। डिकोडर इस सेटिंग को उपयुक्त रूप में संशोधित कर सकता है। डिफ़ॉल्ट मान -1 जितना संभव हो उतना पढ़ने और डीकोड करने के लिए इंगित करता है। यह पैरामीटर एक चरण में बड़ी फ़ाइलों को डीकोड करने से रोकने के लिए है।

फर्स्टलाइन ध्वज इंगित करता है कि यह केवल पहली पंक्ति को वापस करने के लिए पर्याप्त होगा, यदि बाद की लाइनों पर डिकोडिंग त्रुटियां हैं।

विधि को एक लालची पढ़ने की रणनीति का उपयोग करना चाहिए जिसका अर्थ है कि उसे एन्कोडिंग की परिभाषा और दिए गए आकार के अनुसार उतना ही डेटा पढ़ना चाहिए, जैसे कि यदि स्ट्रीम पर वैकल्पिक एन्कोडिंग एंडिंग्स या स्टेट मार्कर उपलब्ध हैं, तो इन्हें भी पढ़ा जाना चाहिए।

readline([size[, keepends]])

इनपुट स्ट्रीम से एक लाइन पढ़ें और डिकोड किए गए डेटा को वापस करें।

आकार , यदि दिया गया है, तो स्ट्रीम के read() पद्धति के आकार तर्क के रूप में पारित किया जाता है।

यदि रख - रखाव झूठी लाइन-एंडिंग है, तो वापस ली गई लाइनों से छीन लिया जाएगा।

readlines([sizehint[, keepends]])

इनपुट स्ट्रीम पर उपलब्ध सभी लाइनों को पढ़ें और उन्हें लाइनों की सूची के रूप में वापस करें।

लाइन-एंडिंग्स को कोडेक के डिकोडर विधि का उपयोग करके कार्यान्वित किया जाता है और सूची प्रविष्टियों में शामिल किया जाता है यदि रख-रखाव सत्य है।

sizehint , यदि दिया जाता है, तो स्ट्रीम के read() विधि के आकार तर्क के रूप में पारित किया जाता है।

reset()

राज्य रखने के लिए उपयोग किए गए कोडेक बफ़र्स को रीसेट करता है।

ध्यान दें कि कोई भी धारा निरस्त नहीं होनी चाहिए। यह विधि मुख्य रूप से डिकोडिंग त्रुटियों से उबरने में सक्षम है।

उपरोक्त विधियों के अतिरिक्त, StreamReader को अंतर्निहित स्ट्रीम से अन्य सभी विधियों और विशेषताओं को भी इनहेरिट करना होगा।

StreamReaderWriter ऑब्जेक्ट

StreamReaderWriter एक सुविधा वर्ग है जो रैपिंग स्ट्रीम को अनुमति देता है जो पढ़ने और लिखने दोनों मोड में काम करती है।

डिज़ाइन ऐसा है कि उदाहरण के निर्माण के लिए lookup() फ़ंक्शन द्वारा दिए गए फ़ैक्टरी फ़ंक्शन का उपयोग कर सकता है।

class codecs.StreamReaderWriter(stream, Reader, Writer, errors='strict')

एक StreamReaderWriter उदाहरण बनाता है। स्ट्रीम फ़ाइल की तरह ऑब्जेक्ट होना चाहिए। रीडर और राइटर को फैक्ट्री फ़ंक्शंस या कक्षाएं होनी चाहिए जो StreamReader और StreamWriter इंटरफ़ेस StreamReader प्रदान करती हैं। त्रुटि हैंडलिंग उसी तरह से की जाती है जैसे कि धारा पाठकों और लेखकों के लिए परिभाषित की जाती है।

StreamReaderWriter उदाहरण StreamReader और StreamWriter वर्गों के संयुक्त इंटरफेस को परिभाषित करते हैं। वे अंतर्निहित धारा से अन्य सभी तरीकों और विशेषताओं को प्राप्त करते हैं।

StreamRecoder ऑब्जेक्ट्स

StreamRecoder एक एन्कोडिंग से दूसरे एन्कोडिंग के डेटा का अनुवाद करता है, जो विभिन्न एन्कोडिंग वातावरण से निपटने के दौरान कभी-कभी उपयोगी होता है।

डिज़ाइन ऐसा है कि उदाहरण के निर्माण के लिए lookup() फ़ंक्शन द्वारा दिए गए फ़ैक्टरी फ़ंक्शन का उपयोग कर सकता है।

class codecs.StreamRecoder(stream, encode, decode, Reader, Writer, errors='strict')

एक StreamRecoder उदाहरण बनाता है जो दो-तरफा रूपांतरण को लागू करता है: दृश्यपटल पर एन्कोड और डिकोड कार्य - कोड कॉलिंग read() और write() लिए दृश्यमान डेटा, जबकि रीडर और राइटर बैकएंड पर काम करते हैं - स्ट्रीम में डेटा।

आप इन ऑब्जेक्ट्स का उपयोग पारदर्शी ट्रांसकोडिंग जैसे कि लैटिन -1 से लेकर यूटीएफ -8 और बैक तक कर सकते हैं।

स्ट्रीम तर्क एक फ़ाइल की तरह ऑब्जेक्ट होना चाहिए।

सांकेतिक शब्दों में बदलना और डिकोड तर्कों को Codec इंटरफ़ेस का पालन करना चाहिए। रीडर और राइटर को फैक्ट्री फ़ंक्शंस या कक्षाएं होनी चाहिए जो क्रमशः StreamReader और StreamWriter इंटरफ़ेस की ऑब्जेक्ट प्रदान करती हैं।

त्रुटि हैंडलिंग उसी तरह से की जाती है जैसे कि धारा पाठकों और लेखकों के लिए परिभाषित की जाती है।

StreamRecoder उदाहरण StreamReader और StreamWriter कक्षाओं के संयुक्त इंटरफेस को परिभाषित करते हैं। वे अंतर्निहित धारा से अन्य सभी तरीकों और विशेषताओं को प्राप्त करते हैं।

एनकोडिंग और यूनिकोड

0x0 - 0x10FFFF में कोड बिंदुओं के अनुक्रम के रूप में स्ट्रिंग्स को आंतरिक रूप से संग्रहीत किया जाता है। (कार्यान्वयन के बारे में अधिक जानकारी के लिए पीईपी 393 देखें।) एक बार सीपीयू और मेमोरी, एंडियननेस के बाहर एक स्ट्रिंग ऑब्जेक्ट का उपयोग किया जाता है और कैसे इन सरणियों को बाइट्स के रूप में संग्रहीत किया जाता है एक मुद्दा बन जाता है। अन्य कोडेक्स के साथ, बाइट्स के अनुक्रम में एक स्ट्रिंग को क्रमबद्ध करना एन्कोडिंग के रूप में जाना जाता है, और बाइट्स के अनुक्रम से स्ट्रिंग को फिर से बनाना डिकोडिंग के रूप में जाना जाता है। विभिन्न प्रकार के पाठ क्रमांकन कोडेक्स होते हैं, जिन्हें सामूहिक रूप से पाठ एनकोडिंग के रूप में संदर्भित किया जाता है।

सबसे सरल पाठ एन्कोडिंग (जिसे 'latin-1' या 'latin-1' 'iso-8859-1' ) कोड कोड को 0255 से बाइट्स 0x0 - 0xff पर मैप करता है, जिसका अर्थ है कि एक स्ट्रिंग ऑब्जेक्ट जिसमें U+00FF ऊपर कोड पॉइंट U+00FF हैं ’ इस कोडक के साथ एन्कोड नहीं किया जा सकता है। ऐसा करने से एक UnicodeEncodeError होगा जो निम्नलिखित की तरह दिखता है (हालाँकि त्रुटि संदेश का विवरण भिन्न हो सकता है): UnicodeEncodeError: 'latin-1' codec can't encode character '\u1234' in position 3: ordinal not in range(256)

एन्कोडिंग्स (तथाकथित चार्मैप एन्कोडिंग्स) का एक और समूह है जो सभी यूनिकोड कोड बिंदुओं का एक अलग सबसेट चुनता है और इन कोड पॉइंट्स को बाइट्स 0x0 - 0xff मैप किया जाता है। यह देखने के लिए कि यह कैसे किया जाता है, उदाहरण के लिए encodings/cp1252.py (जो एन्कोडिंग है जो मुख्य रूप से विंडोज पर उपयोग किया जाता है)। 256 अक्षरों के साथ एक स्ट्रिंग स्थिरांक है जो आपको दिखाता है कि किस चरित्र को किस बाइट के लिए मैप किया गया है।

ये सभी एनकोडिंग केवल यूनिकोड में परिभाषित 1114112 कोड बिंदुओं में से 256 को एन्कोड कर सकते हैं। एक सरल और सीधा तरीका जो प्रत्येक यूनिकोड कोड बिंदु को संग्रहीत कर सकता है, प्रत्येक कोड बिंदु को लगातार चार बाइट्स के रूप में संग्रहीत करना है। दो संभावनाएं हैं: बाइट्स को बड़े एंडियन में या थोड़ा एंडियन ऑर्डर में स्टोर करें। इन दो एन्कोडिंग को क्रमशः UTF-32-BE और UTF-32-LE जाता है। उनका नुकसान यह है कि अगर आप थोड़ा सा एंडियन मशीन पर UTF-32-BE उपयोग करते हैं, तो आपको हमेशा एन्कोडिंग और डिकोडिंग पर बाइट स्वैप करना होगा। UTF-32 इस समस्या से बचता है: बाइट्स हमेशा प्राकृतिक धीरज में रहेंगे। जब सीपीयू द्वारा इन बाइट्स को एक अलग एंडियननेस के साथ पढ़ा जाता है, तो बाइट्स को स्वैप करना होगा। UTF-16 या UTF-32 बाइट अनुक्रम की समाप्ति का पता लगाने में सक्षम होने के लिए, तथाकथित BOM ("बाइट ऑर्डर मार्क") है। यह यूनिकोड वर्ण U+FEFF । इस चरित्र को हर UTF-16 या UTF-32 बाइट अनुक्रम से पहले रखा जा सकता है। इस चरित्र का बाइट 0xFFFE संस्करण ( 0xFFFE ) एक अवैध चरित्र है जो एक यूनिकोड पाठ में प्रकट नहीं हो सकता है। इसलिए जब UTF-16 या UTF-32 बाइट अनुक्रम में पहला वर्ण U+FFFE प्रतीत होता है तो बाइट को डिकोडिंग पर स्वैप करना होता है। दुर्भाग्य से चरित्र U+FEFF का एक दूसरा उद्देश्य था ZERO WIDTH NO-BREAK SPACE : एक ऐसा चरित्र जिसमें कोई चौड़ाई नहीं है और एक शब्द को भी विभाजित नहीं होने देता। यह उदाहरण के लिए एक संयुक्ताक्षर एल्गोरिथ्म के संकेत देने के लिए इस्तेमाल किया जा सकता है। U+FEFF साथ एक U+FEFF का उपयोग करते हुए यूनिकोड 4.0 के साथ ZERO WIDTH NO-BREAK SPACE U+FEFF ZERO WIDTH NO-BREAK SPACE को हटा दिया गया है ( U+2060 ( WORD JOINER ) इस भूमिका को संभालने के साथ)। फिर भी यूनिकोड सॉफ्टवेयर को अभी भी दोनों भूमिकाओं में U+FEFF को संभालने में सक्षम होना चाहिए: BOM के रूप में यह एन्कोडेड बाइट्स के स्टोरेज लेआउट को निर्धारित करने के लिए एक उपकरण है, और एक बार बाइट अनुक्रम को स्ट्रिंग में डिकोड किए जाने के बाद गायब हो जाता है; ZERO WIDTH NO-BREAK SPACE यह एक सामान्य चरित्र है जिसे किसी अन्य की तरह डिकोड किया जाएगा।

एक और एन्कोडिंग है जो यूनिकोड वर्णों की पूरी श्रृंखला को एन्कोडिंग करने में सक्षम है: UTF-8। UTF-8 एक 8-बिट एन्कोडिंग है, जिसका अर्थ है कि UTF-8 में बाइट ऑर्डर के साथ कोई समस्या नहीं है। UTF-8 बाइट अनुक्रम में प्रत्येक बाइट में दो भाग होते हैं: मार्कर बिट्स (सबसे महत्वपूर्ण बिट्स) और पेलोड बिट्स। मार्कर बिट्स 0 से चार बिट्स का एक क्रम है, जिसके बाद 0 बिट होता है। यूनिकोड वर्ण इस तरह से एन्कोड किए गए हैं (एक्स पेलोड बिट्स के साथ, जो जब कॉनकैटेड यूनिकोड वर्ण देते हैं):

रेंज एन्कोडिंग
U-00000000 ... U-0000007F 0xxxxxxx
U-00000080 ... U-000007FF 110xxxxx 10xxxxxx
U-00000800U-0000FFFF 1110xxxx 10xxxxxx 10xxxxxx
U-00010000 ... U-0010FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

यूनिकोड वर्ण का सबसे कम महत्वपूर्ण बिट सबसे सही x बिट है।

चूंकि यूटीएफ -8 एक 8-बिट एन्कोडिंग है इसलिए बीओएम की आवश्यकता नहीं होती है और U+FEFF स्ट्रिंग (भले ही यह पहला चरित्र हो) में किसी भी U+FEFF चरित्र को ZERO WIDTH NO-BREAK SPACE रूप में माना जाता है।

बाहरी जानकारी के बिना यह निश्चित रूप से निर्धारित करना असंभव है कि किस एन्कोडिंग का उपयोग स्ट्रिंग को एन्कोडिंग के लिए किया गया था। प्रत्येक चार्मैप एन्कोडिंग किसी भी यादृच्छिक बाइट अनुक्रम को डिकोड कर सकती है। हालाँकि यह UTF-8 के साथ संभव नहीं है, क्योंकि UTF-8 बाइट अनुक्रमों में एक संरचना होती है जो मनमाने बाइट अनुक्रमों की अनुमति नहीं देती है। विश्वसनीयता बढ़ाने के लिए जिसके साथ एक UTF-8 एन्कोडिंग का पता लगाया जा सकता है, Microsoft ने "utf-8-sig" अपने नोटपैड प्रोग्राम के लिए UTF-8 (जो पायथन 2.5 कॉल ) का एक प्रकार का आविष्कार किया : फ़ाइल में किसी भी यूनिकोड वर्ण को लिखे जाने से पहले, UTF-8 एन्कोडेड बीओएम (जो एक बाइट क्रम के रूप में इस तरह दिखता है: 0xef , 0xbb , 0xbf ) लिखा है। जैसा कि यह अनुचित है कि किसी भी चार्मैप एन्कोडेड फ़ाइल की शुरुआत इन बाइट मानों (जो कि मानचित्र के लिए होगी) से होती है

iso-8859-1 में), यह संभावना को बढ़ाता है कि utf-8-sig बाइट अनुक्रम से एक एन्कोडिंग का सही अनुमान लगाया जा सकता है। तो यहां BOM का उपयोग बाइट अनुक्रम को उत्पन्न करने के लिए उपयोग किए जाने वाले बाइट क्रम को निर्धारित करने में सक्षम नहीं किया जाता है, लेकिन एक हस्ताक्षर के रूप में जो एन्कोडिंग का अनुमान लगाने में मदद करता है। Utf-8-sig कोडेक एन्कोडिंग लिखेंगे पर 0xef , 0xbb , 0xbf फाइल करने के लिए पहले तीन बाइट्स के रूप में। utf-8-sig यदि वे फ़ाइल में पहले तीन बाइट्स के रूप में दिखाई देते हैं तो डिकोडिंग उन तीन बाइट्स को छोड़ देगा। UTF-8 में, BOM के उपयोग को हतोत्साहित किया जाता है और आमतौर पर इससे बचा जाना चाहिए।

मानक एनकोडिंग

पायथन कई कोडेड बिल्ट-इन के साथ आता है, या तो सी फ़ंक्शन के रूप में कार्यान्वित किया जाता है या मेलिंग टेबल के रूप में शब्दकोशों के साथ। निम्न तालिका कुछ सामान्य उपनामों के साथ कोडेक्स को नाम से सूचीबद्ध करती है, और वे भाषाएँ जिनके लिए एन्कोडिंग का उपयोग किया जाता है। न तो उपनामों की सूची और न ही भाषाओं की सूची संपूर्ण होने के लिए है। ध्यान दें कि वर्तनी के विकल्प जो केवल मामले में भिन्न होते हैं या अंडरस्कोर के बजाय एक हाइफ़न का उपयोग करते हैं वे भी मान्य उपनाम हैं; इसलिए, जैसे कोडेक के 'utf-8' लिए एक वैध उपनाम है 'utf_8'

CPython कार्यान्वयन विवरण: कुछ सामान्य एन्कोडिंग प्रदर्शन सुधारने के लिए कोडेक्स लुकअप मशीनरी को बायपास कर सकते हैं। इन अनुकूलन के अवसरों को केवल CPython द्वारा (केस असंवेदनशील) उपनामों के सीमित सेट के लिए पहचाना जाता है: utf-8, utf8, latin-1, latin1, iso-8859-1, iso8859-1, mbcs (केवल Windows), असिसी -आसकी, utf-16, utf16, utf-32, utf32, और डैश के बजाय अंडरस्कोर का उपयोग करना। इन एनकोडिंग के लिए वैकल्पिक उपनामों का उपयोग करने के परिणामस्वरूप धीमी निष्पादन हो सकता है।

संस्करण 3.6 में परिवर्तित: अनुकूलन-अवसर हमें-असीसी के लिए मान्यता प्राप्त है।

चरित्र सेट के कई समान भाषाओं का समर्थन करते हैं। वे अलग-अलग पात्रों में भिन्न होते हैं (जैसे कि यूरो साइन का समर्थन किया जाता है या नहीं), और पदों को कोड करने के लिए पात्रों के असाइनमेंट में। विशेष रूप से यूरोपीय भाषाओं के लिए, निम्नलिखित संस्करण आमतौर पर मौजूद हैं:

  • एक आईएसओ 8859 कोडसेट
  • Microsoft Windows कोड पृष्ठ, जो आमतौर पर 8859 कोडसेट से प्राप्त होता है, लेकिन अतिरिक्त ग्राफिक वर्णों के साथ नियंत्रण वर्णों को बदलता है
  • IBM EBCDIC कोड पृष्ठ
  • एक आईबीएम पीसी कोड पेज, जो एएससीआईआई संगत है
कोडेक उपनाम बोली
ascii 646, हमें-अस्सी अंग्रेज़ी
बिग 5 big5-tw, csbig5 परंपरागत चीनी
big5hkscs big5-hkscs, hkscs परंपरागत चीनी
cp037 IBM037, IBM039 अंग्रेज़ी
cp273 273, IBM273, csIBM273

जर्मन

संस्करण 3.4 में नया।

cp424 EBCDIC-CP-HE, IBM424 यहूदी
cp437 437, IBM437 अंग्रेज़ी
cp500 EBCDIC-CP-BE, EBCDIC-CP-CH, IBM500 पश्चिमी यूरोप
cp720 अरबी
cp737 यूनानी
cp775 IBM775 बाल्टिक भाषाएँ
cp850 850, IBM850 पश्चिमी यूरोप
CP852 852, IBM852 केंद्रीय और पूर्वी यूरोप
cp855 855, IBM855 बल्गेरियाई, बाइलोरियन, मैसेडोनियन, रूसी, सर्बियाई
cp856 यहूदी
cp857 857, IBM857 तुर्की
cp858 858, IBM858 पश्चिमी यूरोप
cp860 860, IBM860 पुर्तगाली
cp861 861, सीपी-आईएस, IBM861 आइसलैंड का
cp862 862, IBM862 यहूदी
cp863 863, IBM863 कैनेडियन
cp864 IBM864 अरबी
cp865 865, IBM865 डेनिश, नार्वे
cp866 866, IBM866 रूसी
cp869 869, सीपी-जीआर, आईबीएम 86 9 यूनानी
cp874 थाई
cp875 यूनानी
cp932 932, ms932, mskanji, एमएस-कांजी जापानी
cp949 949, एमएस 949, यूएचसी कोरियाई
cp950 950, एमएस 950 परंपरागत चीनी
cp1006 उर्दू
cp1026 ibm1026 तुर्की
cp1125 1125, ibm1125, cp866u, ruscii

यूक्रेनी

संस्करण 3.4 में नया।

cp1140 ibm1140 पश्चिमी यूरोप
cp1250 विंडोज़ -1250 केंद्रीय और पूर्वी यूरोप
CP1251 विंडोज़ -1251 बल्गेरियाई, बाइलोरियन, मैसेडोनियन, रूसी, सर्बियाई
cp1252 windows-1252 पश्चिमी यूरोप
cp1253 विंडोज़ -1253 यूनानी
cp1254 विंडोज़ -1254 तुर्की
cp1255 विंडोज़ -1255 यहूदी
cp1256 विंडोज़ -1256 अरबी
cp1257 विंडोज़ -1257 बाल्टिक भाषाएँ
cp1258 विंडोज़ -1258 वियतनामी
cp65001

केवल Windows: Windows UTF-8 ( CP_UTF8 )

संस्करण 3.3 में नया।

euc_jp eucjp, ujis, u-jis जापानी
euc_jis_2004 jisx0213, eucjis2004 जापानी
euc_jisx0213 eucjisx0213 जापानी
euc_kr यूकेर, कोरियाई, ksc5601, ks_c-5601, ks_c-5601-1987, ksx1001, ks_x-1001 कोरियाई
gb2312 चीनी, csiso58gb231280, euc- cn, euccn, eucgb2312-cn, gb2312-1980, gb2312-80, iso- ir-58 सरलीकृत चीनी
GBK 936, सीपी 936, एमएस 936 एकीकृत चीनी
GB18030 gb18030-2000 एकीकृत चीनी
हर्ट्ज hzgb, hz-gb, hz-gb-2312 सरलीकृत चीनी
iso2022_jp csiso2022jp, iso2022jp, iso-2022-jp जापानी
iso2022_jp_1 iso2022jp-1, iso-2022-jp-1 जापानी
iso2022_jp_2 iso2022jp-2, iso-2022-jp-2 जापानी, कोरियाई, सरलीकृत चीनी, पश्चिमी यूरोप, ग्रीक
iso2022_jp_2004 iso2022jp-2004, iso-2022-jp-2004 जापानी
iso2022_jp_3 iso2022jp-3, iso-2022-jp-3 जापानी
iso2022_jp_ext iso2022jp-ext, iso-2022-jp-ext जापानी
iso2022_kr csiso2022kr, iso2022kr, iso-2022-kr कोरियाई
latin_1 iso-8859-1, iso8859-1, 8859, cp819, लैटिन, लैटिन 1, L1 पश्चिम यूरोप
iso8859_2 iso-8859-2, लैटिन 2, एल 2 केंद्रीय और पूर्वी यूरोप
iso8859_3 iso-8859-3, लैटिन 3, एल 3 अंडरवियर, माल्टीज़
iso8859_4 iso-8859-4, लैटिन 4, एल 4 बाल्टिक भाषाएँ
iso8859_5 iso-8859-5, सिरिलिक बल्गेरियाई, बाइलोरियन, मैसेडोनियन, रूसी, सर्बियाई
iso8859_6 iso-8859-6, अरबी अरबी
iso8859_7 iso-8859-7, ग्रीक, ग्रीक 8 यूनानी
iso8859_8 iso-8859-8, हेब्रा यहूदी
iso8859_9 iso-8859-9, लैटिन 5, एल 5 तुर्की
iso8859_10 iso-8859-10, लैटिन 6, एल 6 नॉर्डिक भाषाएं
iso8859_11 iso-8859-11, थाई थाई भाषा
iso8859_13 iso-8859-13, लैटिन 7, एल 7 बाल्टिक भाषाएँ
iso8859_14 iso-8859-14, लैटिन 8, एल 8 सेल्टिक भाषाएं
iso8859_15 iso-8859-15, लैटिन 9, एल 9 पश्चिमी यूरोप
iso8859_16 iso-8859-16, लैटिन 10, एल 10 दक्षिण-पूर्वी यूरोप
johab cp1361, ms1361 कोरियाई
koi8_r रूसी
koi8_t

ताजिक

संस्करण 3.5 में नया।

koi8_u यूक्रेनी
kz1048 kz_1048, strk1048_2002, rk1048

कजाख

संस्करण 3.5 में नया।

mac_cyrillic maccyrillic बल्गेरियाई, बाइलोरियन, मैसेडोनियन, रूसी, सर्बियाई
mac_greek macgreek यूनानी
mac_iceland maciceland आइसलैंड का
mac_latin2 maclatin2, maccentraleurope केंद्रीय और पूर्वी यूरोप
mac_roman मैक्रोमैन, मैकिंटोश पश्चिमी यूरोप
mac_turkish macturkish तुर्की
ptcp154 csptcp154, pt154, cp154, सिरिलिक-एशियाई कजाख
shift_jis csshiftjis, shiftjis, sjis, s_jis जापानी
shift_jis_2004 shiftjis2004, sjis_2004, sjis2004 जापानी
shift_jisx0213 shiftjisx0213, sjisx0213, s_jisx0213 जापानी
utf_32 U32, utf32 सारी भाषाएँ
utf_32_be UTF-32BE सारी भाषाएँ
utf_32_le UTF-32LE सारी भाषाएँ
utf_16 U16, utf16 सारी भाषाएँ
utf_16_be UTF-16BE सारी भाषाएँ
utf_16_le UTF-16LE सारी भाषाएँ
utf_7 यू 7, यूनिकोड-1-1-यूटीएफ -7 सारी भाषाएँ
UTF_8 यू 8, यूटीएफ, यूटीएफ 8 सारी भाषाएँ
utf_8_sig सारी भाषाएँ

संस्करण 3.4 में परिवर्तित: utf-16 * और utf-32 * एन्कोडर अब सरोगेट कोड पॉइंट ( U+D800 - U+DFFF ) को एनकोड करने की अनुमति नहीं देते हैं । Utf-32 * डिकोडर्स अब बाइट सीक्वेंस को डिकोड नहीं करता है जो कोड पॉइंट्स को सरोगेट करता है।

पायथन विशिष्ट एनकोडिंग

कई पूर्वनिर्धारित कोडेक्स पायथन के लिए विशिष्ट हैं, इसलिए उनके कोडेक नामों का अजगर के बाहर कोई अर्थ नहीं है। इन्हें अपेक्षित इनपुट और आउटपुट प्रकारों के आधार पर नीचे दी गई तालिकाओं में सूचीबद्ध किया गया है (ध्यान दें कि जब कोडक के लिए टेक्स्ट एनकोडिंग सबसे आम उपयोग का मामला है, तो अंतर्निहित कोडेक इन्फ्रास्ट्रक्चर सिर्फ टेक्स्ट एन्कोडिंग के बजाय मनमाने ढंग से डेटा ट्रांसफ़ॉर्म का समर्थन करता है)। असममित कोडेक्स के लिए, निर्दिष्ट उद्देश्य एन्कोडिंग दिशा का वर्णन करता है।

पाठ एनकोडिंग्स

निम्न कोडक एन्कोडिंग और बाइट्स-जैसे ऑब्जेक्ट को डिकोड करने के str लिए प्रदान करते हैं , यूनिकोड पाठ एन्कोडिंग के समान। bytes str

कोडेक उपनाम उद्देश्य
IDNA कार्यान्वयन RFC 3490 , यह भी देखें encodings.idna । केवल errors='strict' समर्थित है।
MBCS एएनएसआई, डीबीकेएस केवल Windows: एएनएसआई कोडपेज (CP_ACP) के अनुसार ऑपरेंड एनकोड करें
oem

केवल Windows: ओईएम कोडपेज (CP_OEMCP) के अनुसार इनकोड ऑपरेंड

संस्करण 3.6 में नया।

PalmOS पामोस का एनकोडिंग 3.5
पनीकोड कार्यान्वयन RFC 3492 । स्टेटफुल कोडेक्स समर्थित नहीं हैं।
raw_unicode_escape साथ लैटिन -1 एन्कोडिंग \uXXXX और \UXXXXXXXX अन्य कोड अंक के लिए। मौजूदा बैकस्लैश किसी भी तरह से बच नहीं रहे हैं। इसका उपयोग पायथन अचार प्रोटोकॉल में किया जाता है।
अपरिभाषित सभी रूपांतरणों के लिए एक अपवाद उठाएं, यहां तक ​​कि खाली तार भी। त्रुटि हैंडलर को अनदेखा किया जाता है।
unicode_escape ASCII- एन्कोडेड पायथन स्रोत कोड में यूनिकोड शाब्दिक की सामग्री के रूप में उपयुक्त एन्कोडिंग, सिवाय इसके कि उद्धरणों से बच न जाए। लैटिन -1 स्रोत कोड से डिकोड। इस बात से सावधान रहें कि पायथन स्रोत कोड वास्तव में डिफ़ॉल्ट रूप से UTF-8 का उपयोग करता है।
unicode_internal

ऑपरेंड के आंतरिक प्रतिनिधित्व को लौटाएं। स्टेटफुल कोडेक्स समर्थित नहीं हैं।

संस्करण 3.3 के बाद से पदावनत: यह प्रतिनिधित्व PEP 393 के अनुसार है

बाइनरी ट्रांसफ़ॉर्म

: निम्नलिखित codecs द्विआधारी रूपांतरण प्रदान बाइट्स जैसी वस्तु के लिए bytes मैपिंग। वे bytes.decode() (जो केवल उत्पादन का str उत्पादन करता है) द्वारा समर्थित नहीं हैं ।

कोडेक उपनाम उद्देश्य एनकोडर / डिकोडर
base64_codec [1] base64, base_64

मल्टीलाइन MIME बेस 64 में ऑपरेंड कन्वर्ट करें (परिणाम में हमेशा एक अनुगामी शामिल होता है '\n' )

संस्करण 3.4 में परिवर्तित: एन्कोडिंग और डिकोडिंग के लिए इनपुट के रूप में किसी भी बाइट्स जैसी वस्तु को स्वीकार करता है

base64.encodebytes() / base64.decodebytes()
bz2_codec BZ2 Bz2 का उपयोग करके ऑपरेंड को संपीड़ित करें bz2.compress() / bz2.decompress()
hex_codec हेक्स बाइट को दो अंकों के साथ हेक्साडेसिमल प्रतिनिधित्व के लिए ऑपरेंड में बदलें binascii.b2a_hex() / binascii.a2b_hex()
quopri_codec quopri, quotedprintable, quoted_printable कन्वर्ट MIME को MIME को प्रिंट करने योग्य उद्धृत करें quopri.encode() के साथ quotetabs=True / quopri.decode()
uu_codec तुम तुम Uuencode का उपयोग करके ऑपरेंड को कनवर्ट करें uu.encode() / uu.decode()
zlib_codec zip, zlib गज़िप का उपयोग करके ऑपरेंड को संपीड़ित करें zlib.compress() / zlib.decompress()
[1] बाइट्स जैसी वस्तुओं के अलावा , डिकोडिंग 'base64_codec' के str लिए ASCII- केवल उदाहरणों को भी स्वीकार करता है

वर्जन 3.2 में नया: बाइनरी ट्रांसफॉर्मेशन की बहाली।

संस्करण 3.4 में परिवर्तित: द्विआधारी रूपांतरों के लिए उपनाम की बहाली।

पाठ रूपांतरण

निम्न कोडक एक टेक्स्ट ट्रांसफॉर्मेशन प्रदान करता है: ए str टू str मैपिंग। यह द्वारा समर्थित नहीं है str.encode() (जो केवल bytes आउटपुट का उत्पादन करता है)।

कोडेक उपनाम उद्देश्य
rot_13 ROT13 ऑपरेंड के सीज़र-साइबरफ़ोर एन्क्रिप्शन को लौटाता है

संस्करण 3.2 में नया: rot_13 पाठ परिवर्तन की बहाली ।

संस्करण 3.4 में बदला: rot13 उपनाम की बहाली ।

encodings.idna - अनुप्रयोगों में अंतर्राष्ट्रीय डोमेन नाम

यह मॉड्यूल RFC 3490 (अनुप्रयोगों में अंतर्राष्ट्रीय डोमेन नाम) और RFC 3492 (Nameprep: अंतर्राष्ट्रीय डोमेन नाम के लिए एक स्ट्रिंग प्रोफ़ाइल) (IDN) लागू करता है। यह punycode एन्कोडिंग पर बनाता है और stringprep

ये RFC डोमेन नामों में गैर-ASCII वर्णों का समर्थन करने के लिए एक प्रोटोकॉल को परिभाषित करते हैं। एक डोमेन नाम जिसमें गैर-एएससीआईआई अक्षर हैं (जैसे कि www.Alliancefrançaise.nu ) एक एएससीआईआई-संगत एन्कोडिंग (एसीई, जैसे) में परिवर्तित हो जाता है www.xn--alliancefranaise-npb.nu । तब डोमेन नाम का ACE फॉर्म उन सभी स्थानों पर उपयोग किया जाता है जहां मनमाने ढंग से वर्णों को प्रोटोकॉल द्वारा अनुमति नहीं दी जाती है, जैसे DNS क्वेरीज़, HTTP होस्ट फ़ील्ड, और इसी तरह। यह रूपांतरण आवेदन में किया जाता है; यदि संभव हो तो उपयोगकर्ता के लिए अदृश्य: आवेदन को पारदर्शी रूप से यूनिकोड डोमेन लेबल को वायर पर IDNA में बदलना चाहिए, और उपयोगकर्ता को प्रस्तुत करने से पहले एसीई लेबल को यूनिकोड में परिवर्तित करना चाहिए।

पायथन इस रूपांतरण का कई तरीकों से समर्थन करता है: idna कोडक यूनिकोड और एसीई के बीच रूपांतरण करता है, आरएफसी 3490 के खंड 3.1 में परिभाषित विभाजक वर्णों के आधार पर लेबल में एक इनपुट स्ट्रिंग को अलग करता है और प्रत्येक लेबल को एसीई में आवश्यकतानुसार परिवर्तित करता है, और एक इनपुट बाइट को अलग करता है। . विभाजक के आधार पर लेबल में स्ट्रिंग और यूनिकोड में पाए गए किसी भी एसीई लेबल को परिवर्तित करना। इसके अलावा, socket मॉड्यूल पारदर्शी रूप से यूनिकोड होस्ट नामों को ACE में रूपांतरित करता है, ताकि उन्हें सॉकेट मॉड्यूल में पास करने पर एप्लिकेशन को स्वयं होस्ट नाम बदलने के बारे में चिंतित न हों। उस के शीर्ष पर, मॉड्यूल जिनके पास फ़ंक्शन पैरामीटर के रूप में होस्ट नाम हैं, जैसे कि http.client और ftplib , यूनिकोड होस्ट नाम स्वीकार करते हैं ( http.client तब पारदर्शी रूप से होस्ट फ़ील्ड में IDNA होस्टनाम भेजता है यदि वह उस फ़ील्ड को बिल्कुल भी भेजता है)।

तार से होस्ट नाम प्राप्त करते समय (जैसे रिवर्स नाम लुकअप में), यूनिकोड के लिए कोई स्वचालित रूपांतरण नहीं किया जाता है: उपयोगकर्ता को ऐसे होस्ट नामों को पेश करने के इच्छुक एप्लिकेशन को यूनिकोड को डिकोड करना चाहिए।

मॉड्यूल encodings.idna नेमपर्प प्रक्रिया को भी कार्यान्वित करता है, जो कि होस्ट नामों पर कुछ सामान्यीकरण करती है, अंतर्राष्ट्रीय डोमेन नामों की केस-असंवेदनशीलता को प्राप्त करने और समान वर्णों को एकजुट करने के लिए। यदि आवश्यक हो तो नेमपर्प फ़ंक्शंस का सीधे उपयोग किया जा सकता है।

encodings.idna.nameprep(label)

लेबल का नामांकित संस्करण लौटाएं । वर्तमान में कार्यान्वयन क्वेरी स्ट्रिंग्स को मानता है, इसलिए AllowUnassigned यह सच है।

encodings.idna.ToASCII(label)

RC 3490 में निर्दिष्ट ASCII के लिए एक लेबल बदलें । UseSTD3ASCIIRules गलत माना जाता है।

encodings.idna.ToUnicode(label)

RFC 3490 में निर्दिष्ट अनुसार एक लेबल को यूनिकोड में बदलें ।

encodings.mbcs - विंडोज एएनएसआई कोडपेज

ANSI कोडपेज (CP_ACP) के अनुसार इनक्रेड ऑपरेंड।

उपलब्धता: केवल विंडोज।

संस्करण 3.3 में बदला गया: किसी भी त्रुटि हैंडलर का समर्थन करें।

संस्करण 3.2 में बदला: 3.2 से पहले, त्रुटियों के तर्क को नजरअंदाज कर दिया गया था; 'replace' हमेशा सांकेतिक शब्दों में बदलना और 'ignore' डिकोड करने के लिए इस्तेमाल किया गया था ।

encodings.utf_8_sig - BOM हस्ताक्षर के साथ UTF-8 कोडेक

यह मॉड्यूल UTF-8 कोडक के एक प्रकार को लागू करता है: UTF-8 एन्कोडेड BOM को एन्कोडिंग पर UTF-8 एन्कोडेड बाइट्स के लिए पूर्वनिर्मित किया जाएगा। स्टेटफुल एनकोडर के लिए यह केवल एक बार (बाइट स्ट्रीम पर पहले लिखने पर) किया जाता है। डेटा की शुरुआत में एक वैकल्पिक UTF-8 एनकोडेड BOM को डीकोड करने के लिए छोड़ दिया जाएगा।

Original text