Computer >> Máy Tính >  >> Lập trình >> Python

Mã hóa và giải mã dữ liệu có thể in được trích dẫn MIME bằng Python

Nhiều khi chúng ta cần xử lý dữ liệu không phải lúc nào cũng có các ký tự ASCII thông thường. Ví dụ:một email bằng ngôn ngữ khác không phải là tiếng Anh. Python có cơ chế để đối phó với các ký tự như vậy bằng cách sử dụng mô-đun dựa trên MIME (Multipurpose Internet Mail Extensions). Trong bài viết này, chúng ta sẽ xem cách chúng ta có thể giải mã các ký tự như vậy trong email hoặc trong một số đầu vào trực tiếp.

Sử dụng gói email

Gói email có các mô-đun cụ thể là mime và bộ mã có thể thực hiện công việc mã hóa và giải mã như trong ví dụ dưới đây. Chúng tôi đã nhận một email chứa các ký tự Unicode và sau đó mã hóa nó thành utf-8.

Ví dụ

 import email.mime, email.mime.nonmultipart, email.charsetmsg =email.mime.nonmultipart.MIMENonMultipart ('text', 'clear', charset ='utf-8') # Tạo charsetcs =email mới. charset.Charset ('utf-8') cs.body_encoding =email.charset.QP # Đặt nội dung bằng cách sử dụng charsetmsg.set_payload mới (u'Đây là văn bản chứa ünicöde ', charset =cs) print (msg)  

Chạy đoạn mã trên cho chúng ta kết quả sau -

Đầu ra

 Loại nội dung:văn bản / đơn giản; charset ="utf-8" MIME-Version:1.0Content-Transfer-Encoding:quote-printable Đây là văn bản chứa =C3 =BCnic =C3 =B6de 

Sử dụng quopri

Mô-đun python này thực hiện mã hóa và giải mã truyền tải có thể in được trích dẫn. Mã hóa có thể in được trích dẫn được thiết kế cho dữ liệu có tương đối ít ký tự không thể in được. Trong ví dụ dưới đây, chúng ta thấy cách chúng ta có thể mã hóa và giải mã chuỗi bằng các ký tự ASCII không thông thường.

Ví dụ

 import quopristr1 ='äé' # encoded =quopri.encodestring ('äé'.encode (' utf-8 ')) encoded =quopri.encodestring (str1.encode (' utf-8 ')) print (được mã hóa) str2 ='=C3 =A4 =C3 =A9'decoded_string =quopri.decodestring (str2) print (decoded_string.decode (' utf-8 ')) 

Chạy đoạn mã trên cho chúng ta kết quả sau -

Đầu ra

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