Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

เข้ารหัสและถอดรหัสข้อมูลที่พิมพ์ได้ของ MIME โดยใช้ Python


หลายครั้งที่เราจำเป็นต้องจัดการกับข้อมูลที่ไม่ได้มีอักขระ ASCII ปกติเสมอไป ตัวอย่างเช่น อีเมลในภาษาอื่นที่ไม่ใช่ภาษาอังกฤษ Python มีกลไกในการจัดการกับอักขระดังกล่าวโดยใช้โมดูลที่ใช้ MIME (Multipurpose Internet Mail Extensions) ในบทความนี้ เราจะมาดูกันว่าเราจะถอดรหัสอักขระดังกล่าวในอีเมลได้อย่างไรหรือด้วยวิธีอื่นๆ ในอินพุตโดยตรง

การใช้แพ็คเกจอีเมล

แพ็คเกจอีเมลมีโมดูลต่างๆ ได้แก่ mime และ charset ซึ่งสามารถดำเนินการเข้ารหัสและถอดรหัสดังแสดงในตัวอย่างด้านล่าง เราได้นำข้อความอีเมลที่มีอักขระ Unicode แล้วเข้ารหัสเป็น utf-8

ตัวอย่าง

นำเข้า email.mime, email.mime.nonmultipart, email.charsetmsg=email.mime.nonmultipart.MIMENonMultipart('text', 'plain', charset='utf-8')#สร้างใหม่ charsetcs=email charset.Charset('utf-8')cs.body_encoding =email.charset.QP# ตั้งค่าเนื้อหาโดยใช้ charsetmsg.set_payload ใหม่ (u'นี่คือข้อความที่มี ünicöde', charset=cs)print(msg) 

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

ผลลัพธ์

เนื้อหา-ประเภท:ข้อความ/ธรรมดา; charset="utf-8"MIME-Version:1.0Content-Transfer-Encoding:quoted-printableนี่คือข้อความที่มี =C3=BCnic=C3=B6de

การใช้ quopri

โมดูลหลามนี้ดำเนินการเข้ารหัสและถอดรหัสการขนส่งที่เสนอราคาสำหรับพิมพ์ การเข้ารหัสที่เสนอราคาสำหรับพิมพ์ได้รับการออกแบบมาสำหรับข้อมูลที่มีอักขระที่ไม่สามารถพิมพ์ได้ค่อนข้างน้อย ในตัวอย่างด้านล่าง เราจะเห็นว่าเราสามารถเข้ารหัสและถอดรหัสสตริงด้วยอักขระ ASCII ที่ไม่ใช่แบบปกติได้อย่างไร

ตัวอย่าง

import quopristr1 ='äé'#encoded =quopri.encodestring('äé'.encode('utf-8'))encoded =quopri.encodestring(str1.encode('utf-8'))print(เข้ารหัส) str2 ='=C3=A4=C3=A9'decoded_string =quopri.decodestring(str2)print(decoded_string.decode('utf-8'))

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

ผลลัพธ์

b'=C3=A4=C3=A9'äé