कई बार हमें ऐसे डेटा से निपटना पड़ता है जिसमें हमेशा नियमित ASCII वर्ण नहीं होते। उदाहरण के लिए, अंग्रेजी के अलावा किसी अन्य भाषा में एक ईमेल। पायथन में MIME (मल्टीपर्पस इंटरनेट मेल एक्सटेंशन्स) आधारित मॉड्यूल का उपयोग करके ऐसे वर्णों से निपटने की व्यवस्था है। इस लेख में हम देखेंगे कि हम ईमेल में या सीधे इनपुट में ऐसे वर्णों को कैसे डिकोड कर सकते हैं।
email पैकेज का उपयोग करके
email पैकेज में mime और charset मॉड्यूल्स होते हैं जो नीचे दिए गए उदाहरण में दिखाए अनुसार एन्कोडिंग और डिकोडिंग का काम कर सकते हैं। हमने यूनिकोड वर्णों वाला एक ईमेल संदेश लिया और फिर इसे utf-8 में एन्कोड किया।
उदाहरण
import email.mime, email.mime.nonmultipart, email.charset
msg = email.mime.nonmultipart.MIMENonMultipart('text', 'plain', charset='utf-8')
# एक नया चारसेट बनाएं
cs = email.charset.Charset('utf-8')
cs.body_encoding = email.charset.QP
# नए चारसेट का उपयोग करके कंटेंट सेट करें
msg.set_payload(u'This is the text containing \u00fcnic\u00f6de', charset=cs)
print(msg)
उपरोक्त कोड चलाने से हमें निम्न परिणाम मिलता है:
आउटपुट
Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable This is the text containing =C3=BCnic=C3=B6de
quopri का उपयोग करके
यह पायथन मॉड्यूल quoted-printable ट्रांसपोर्ट एन्कोडिंग और डिकोडिंग करता है। quoted-printable एन्कोडिंग उन डेटा के लिए डिज़ाइन किया गया है जहां अपेक्षाकृत कम नॉन-प्रिंटेबल वर्ण होते हैं। नीचे दिए गए उदाहरण में हम देखते हैं कि हम गैर-नियमित ASCII वर्णों वाली स्ट्रिंग को कैसे एन्कोड और डिकोड कर सकते हैं।
उदाहरण
import quopri
str1 = '\xe4\xe9' # äé UTF-8 में
encoded = quopri.encodestring(str1.encode('utf-8'))
print(encoded)
str2 = '=C3=A4=C3=A9'
decoded_string = quopri.decodestring(str2)
print(decoded_string.decode('utf-8'))
उपरोक्त कोड चलाने से हमें निम्न परिणाम मिलता है:
आउटपुट
b'=C3=A4=C3=A9' äé
quoted-printable एन्कोडिंग नियम:
- प्रिंटेबल ASCII वर्ण (33-126, '=' को छोड़कर) → जैसे के तैसे
- स्पेस और टैब → जैसे के तैसे (लाइन अंत में नहीं)
- अन्य सभी बाइट्स →
=XXफॉर्मेट में (XX = हेक्स मान) - लाइन लंबाई सीमा: 76 वर्ण (सॉफ्ट लाइन ब्रेक
=\nके साथ)
उपयोग के मामले:
- ईमेल संदेश एन्कोडिंग
- अंतर्राष्ट्रीय वर्णों वाला वेब फॉर्म डेटा
- विविध एन्कोडिंग वाले डेटा का सुरक्षित ट्रांसपोर्ट