摘要:我們測試一下對空格和制表符編碼可以看到空格和制表符分別被轉換成為和。和與上述方法的區別在于是對流對象進行操作。
之前看到群友這樣一個問題:
大概就是調用網絡接口得到的數據是如下形式:
text = """=E5=9B=A0=E4=B8=BA=E4=B8=81=E4=BF=8A=E6=99=96=E5=8F=AA=E8=B7=9F=E7=9D=80==E9=BA=A6=E8=BF=AA=E5=B0=B1=E4=B8=8D=E5=8F=AF=E8=83=BD=E9=82=A3=E5=88=B0==E6=80=BB=E5=86=A0=E5=86=9B=E6=88=92=E6=8C=87=EF=BC=8C=E8=80=83=E8=99=91==E5=88=B0=E6=8A=A4=E7=90=83=E9=97=AE=E9=A2=98=EF=BC=8C=E5=A6=82=E6=9E=9C==E7=94=A8=E9=BA=A6=E8=BF=AA=E6=8D=A2=E4=BA=A8=E5=88=A9=E7=9A=84=E8=AF=9D==E8=AF=B4=E4=B8=8D=E5=AE=9A=E5=B0=B1=E8=A1=8C=EF=BC=8C=E5=BD=93=E7=84=B6==E8=AF=B8=E8=91=9B=E5=AD=94=E6=98=8E=E8=BF=99=E4=B8=AA=E8=80=81=E7=8B=90==E7=8B=B8=E8=82=AF=E5=AE=9A=E6=98=AF=E7=95=A5=E6=87=82=E8=BF=99=E4=BB=B6==E4=BA=8B=E7=9A=84=EF=BC=8C=E4=BB=96=E7=AC=AC=E4=B8=80=E4=B8=AA=E4=B8=8D==E7=AD=94=E5=BA=94=EF=BC=8C=E5=B0=B1=E7=AE=97=E4=BB=96=E7=AD=94=E5=BA=94==E4=BA=86=EF=BC=8C=E7=BC=9D=E5=B0=8F=E8=82=9B=E8=83=BD=E7=AD=94=E5=BA=94==E5=90=97=EF=BC=9F=E6=89=80=E4=BB=A5=E8=BF=99=E6=95=B4=E4=BB=B6=E4=BA=8B==E6=83=85=E7=9A=84=E4=BA=AE=E7=82=B9=E5=B0=B1=E5=9C=A8=E4=BA=8E=E7=A7=A6==E5=A5=8B"""
其實這是Quoted-Printable Content-Transfer-Encoding編碼出來的文本,這種編碼的目的是為了防止文字傳輸時編碼格式被修改,參看:https://www.freesoft.org/CIE/RFC/1521/6.htm
對于這種編碼形式,python內置庫提供了quopri能夠解碼上述文本:
import quopriresult = quopri.decodestring(text).decode("u8")result
"因為丁俊暉只跟著麥迪就不可能那到總冠軍戒指,考慮到護球問題,如果用麥迪換亨利的話說不定就行,當然諸葛孔明這個老狐貍肯定是略懂這件事的,他第一個不答應,就算他答應了,縫小肛能答應嗎?所以這整件事情的亮點就在于秦奮"
關于quopri模塊可參考:https://docs.python.org/zh-cn/3/library/quopri.html
也就四個方法:
下面再測試一下編碼:
text = "測試 Quoted-Printable /t編碼"quopri.encodestring(text.encode("u8"))
b"=E6=B5=8B=E8=AF=95 Quoted-Printable /t=E7=BC=96=E7=A0=81"
其中quotetabs
參數表示是否對空格和制表符編碼,默認不編碼。
我們測試一下對空格和制表符編碼:
quopri.encodestring(text.encode("u8"), quotetabs=True)
b"=E6=B5=8B=E8=AF=95=20Quoted-Printable=20=09=E7=BC=96=E7=A0=81"
可以看到空格和制表符分別被轉換成為=20
和=09
。
而header
參數則控制了空格是否被編碼為下劃線:
quopri.encodestring(text.encode("u8"), header=True)
b"=E6=B5=8B=E8=AF=95_Quoted-Printable_/t=E7=BC=96=E7=A0=81"
??注意:當
quotetabs
參數設置為True時,header參數則無效。
decode和encode與上述方法的區別在于是對流對象進行操作。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/120001.html
摘要:發送郵件好說,接收和下載郵件也好說。所以我們想要解析一封郵件把它拆成人能讀懂的標題收發件人內容附件等,就必須得理解這套協議。了解協議,其實主要就是了解郵件的嵌套結構。另一種壓縮方式,需要用庫函數來解碼。 郵件的解析是個大課題,遠超一般人的預期。它遠比發送郵件和接收郵件要復雜的多的多。這就是為什么網上中文外文搜郵件的問題,絕大多數都是講發送的而講接收的很少。 發送郵件好說,接收和下載郵件...
摘要:字符編碼表,碼位碼元將編碼字符集中的碼位轉換成有限比特長度的整型值的序列。字符編碼方案,碼元序列化也稱為常說的序列化。每個字節里的二進制數就是字節序列。另一個情況則是壓縮字節序列的值,如或進程長度編碼等無損壓縮技術。 《流暢的Python》筆記。本篇主要講述不同編碼之間的轉換問題,比較繁雜,如果平時處理文本不多,或者語言比較單一,沒有多語言文本處理的需求,則可以略過此篇。 1. 前言 ...
摘要:前言本篇主要介紹基本數據類型,以文本進度條為例,介紹庫的使用。 前言 本篇主要介紹基本數據類型,以文本進度條為例,介紹time庫的使用。 并在最后對蟒蛇繪制的代碼進...
摘要:編碼轉換為編碼下面讓我們來看下如何將編碼的數據轉換為編碼的數據。該方法是將碼進行編碼轉換,從而得到編碼的數據。 概述 當你在前端需要通過二進制數據與服務端進行通信時,你可能會遇到二進制數據的編碼問題。大部分服務端的字符串編碼類型都為UTF-8,而JavaScript中字符串編碼類型是UTF-16,因此,你需要一個能夠將字符串在兩種編碼方式間進行轉換的方法。 本文通過對utfx.js這個...
閱讀 1635·2021-10-09 09:44
閱讀 2768·2021-10-08 10:04
閱讀 2461·2021-09-26 09:55
閱讀 3831·2021-09-22 10:02
閱讀 3304·2019-08-29 17:08
閱讀 1064·2019-08-29 15:08
閱讀 2951·2019-08-26 13:52
閱讀 3267·2019-08-26 13:34