日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

QP编码详解

發布時間:2023/11/27 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QP编码详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?介紹Quote-Printable編碼。


MIME定義了兩種編碼方法,其中一種是BASE64,另一種是Quote-Printable,即QP編碼。前一種大家應該很熟悉,而后一種相對陌生。


前面已經介紹過MIME格式:

MIME格式解析


本文將介紹QP編碼。


01

原理


QP編碼是一種使用可打印的ASCII字符 (如字母、數字與"=")表示各種編碼格式下的字符。其方法是將一個8bit的字符表示成兩個16進制數,并在前面加一個“=”,共三個ASCII字符。


經過QP編碼后的數據,通常是下面這個樣子:

=E5=8D=8F=E8=AE=AE=E5=88=86=E6=9E=90=E4=B8=8E=E8=BF=98=E5=8E=9F


對QP編碼而言,所有ASCII字符都可以直接用ASCII字符編碼來直接表示,但是有一個例外,就是字符“=”,它將在QP編碼中根據其十進制值被編碼為“=3D”,因為它在編碼過程中被使用。


另外,對制表符和空格符,即tab和space,雖然規定如果不出現在行尾可以用其ASCII字符編碼直接表示,在行尾才需要被編碼,但是實際應用中基本上都是統一處理,分別表示為“=09”(tab)和“=20”(space)。


而數據中的換行,即行結束標志,則需要轉換為回車加換行,最終為0x0d0x0a,而最終的編碼則是“=0D=0A”。


QP編碼規定編碼后的數據每行不能超過76個字符。當超過這個限制時,將在編碼結果中使用軟換行進行分行,即每75個字符后增加一個“=”,然后再接上換行CRLF,之后開始新的一行,這個“=”在解碼的時候并不會解出任何數據。


02


例子


回頭再看上文中的QP編碼數據:

=E5=8D=8F=E8=AE=AE=E5=88=86=E6=9E=90=E4=B8=8E=E8=BF=98=E5=8E=9F


解碼后即為"協議分析與還原"UTF8編碼,每三個字節表示一個漢字:

可以看出,對QP編碼進行解碼相當簡單,即將可見字符中除行結束外的每個“=”之后的兩個ASCII字符直接當成一個16進制數值進行處理即可。


至于解QP編碼的工具,網上很多,這里給一個:

http://web.chacuo.net/charsetquotedprintable


有什么問題,可聯系我交流。

長按進行關注。





總結

以上是生活随笔為你收集整理的QP编码详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

歡迎分享!

轉載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:QP编码详解