3.2 Quoted printable 編碼
QP 編碼用于表示含有大量對應可打印字符的數組,這種編碼方式使字符單元在傳輸過程中被更改的可能性很小。如果正在編碼的數據大部分是ASCII文本,那么編碼后的形式具有很高的可讀性。一個完全是ASCII值的正文數據由QP編碼后可以保證數據在字符翻譯或經由網關時數據的完整性。
編碼規則如下:
規則1:(一般8位組的表示方式), 任何的八位組,都可以用”=”后加該八位組的16進制值來表示,除了那些根據數據編碼規范中新行的慣例來指定短行的表示單位。必須用大寫字母。比如值是12 ,則表示為”=0C”。
規則2:(文字表示)值在33-60 ,以及62-126的八位組(包含頭尾值),可以表示成那些八位組對應的ASCII字符。
規則3:(空格) 值是9和32的八位組可以分別表示為ASCII 的TAB和SPACE值,但是不可以出現在編碼行的末尾。任何在編碼行的TAB或SPACE字符必須后面有可打印字符出現。特殊情況下,編碼行的末尾出現的”=”,表示斷行,其前面可能是一個或多個TAB或SPACE。 實行這條規則的原因是一些METs(Message Transport Agents-消息傳輸單元)會在文本末尾補上SPACE,因此,解碼時,任何跟在行后的空格必須刪除。
規則4:(斷行)在原文中的斷行必須表示成協議中的斷行符-CRLF序列("=0D=0A” )。由于非文本類型的規范表示一般不包括斷行,所以這種類型的qp編碼沒有硬換行。通常,base64編碼在二進制編碼上更占優勢。
規則5:(軟換行)QP編碼要求編碼后每行不能超過76個字符。當超過這個限制時,將適用軟換行,用”=”表示編碼行的斷行,后接CRLF。(76的限制包括”=”)。