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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

QP编码详解

發(fā)布時(shí)間:2023/11/27 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QP编码详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?介紹Quote-Printable編碼。


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


前面已經(jīng)介紹過MIME格式:

MIME格式解析


本文將介紹QP編碼。


01

原理


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


經(jīng)過QP編碼后的數(shù)據(jù),通常是下面這個(gè)樣子:

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


對QP編碼而言,所有ASCII字符都可以直接用ASCII字符編碼來直接表示,但是有一個(gè)例外,就是字符“=”,它將在QP編碼中根據(jù)其十進(jìn)制值被編碼為“=3D”,因?yàn)樗诰幋a過程中被使用。


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


而數(shù)據(jù)中的換行,即行結(jié)束標(biāo)志,則需要轉(zhuǎn)換為回車加換行,最終為0x0d0x0a,而最終的編碼則是“=0D=0A”。


QP編碼規(guī)定編碼后的數(shù)據(jù)每行不能超過76個(gè)字符。當(dāng)超過這個(gè)限制時(shí),將在編碼結(jié)果中使用軟換行進(jìn)行分行,即每75個(gè)字符后增加一個(gè)“=”,然后再接上換行CRLF,之后開始新的一行,這個(gè)“=”在解碼的時(shí)候并不會(huì)解出任何數(shù)據(jù)。


02


例子


回頭再看上文中的QP編碼數(shù)據(jù):

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


解碼后即為"協(xié)議分析與還原"UTF8編碼,每三個(gè)字節(jié)表示一個(gè)漢字:

可以看出,對QP編碼進(jìn)行解碼相當(dāng)簡單,即將可見字符中除行結(jié)束外的每個(gè)“=”之后的兩個(gè)ASCII字符直接當(dāng)成一個(gè)16進(jìn)制數(shù)值進(jìn)行處理即可。


至于解QP編碼的工具,網(wǎng)上很多,這里給一個(gè):

http://web.chacuo.net/charsetquotedprintable


有什么問題,可聯(lián)系我交流。

長按進(jìn)行關(guān)注。





總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

歡迎分享!

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

本文地址:QP编码详解