অনেক সময় আমাদের এমন ডেটা নিয়ে কাজ করতে হয় যাতে রেগুলার ASCII ক্যারেক্টার নাও থাকে। উদাহরণস্বরূপ, ইংরেজি ছাড়া অন্য কোনো ভাষার ইমেইল। পাইথনে MIME (Multipurpose Internet Mail Extensions) ভিত্তিক মডিউল আছে যাতে এই ক্যারেক্টারগুলো হ্যান্ডেল করা যায়। এই আর্টিকেলে আমরা দেখব কিভাবে ইমেইল বা সিম্পল ইনপুটে এমন ক্যারেক্টার ডিকোড করা যায়।
email প্যাকেজ ব্যবহার করে
email প্যাকেজে mime এবং charset মডিউল আছে যা এনকোডিং এবং ডিকোডিংয়ের কাজ করে। নিচের উদাহরণে একটি ইউনিকোড ক্যারেক্টার সম্বলিত ইমেইল মেসেজ নেওয়া হয়েছে এবং সেটিকে utf-8-এ এনকোড করা হয়েছে।
উদাহরণ
import email.mime, email.mime.nonmultipart, email.charset
msg = email.mime.nonmultipart.MIMENonMultipart('text', 'plain', charset='utf-8')
# Construct a new charset
cs = email.charset.Charset('utf-8')
cs.body_encoding = email.charset.QP
# Set the content using the new charset
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) ট্রান্সপোর্ট এনকোডিং এবং ডিকোডিং করে। কোটেড-প্রিন্টেবল এনকোডিং সেটি ডিজাইন করা হয়েছে সেসব ডেটার জন্য যেখানে কম নন-প্রিন্টেবল ক্যারেক্টার থাকে। নিচের উদাহরণে দেখানো হয়েছে কিভাবে নন-রেগুলার ASCII ক্যারেক্টার সম্বলিত স্ট্রিং এনকোড এবং ডিকোড করা যায়।
উদাহরণ
import quopri
str1 = '\xe4\xe9' # äé
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' äé