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的限制包括”=”)。