Quoted-printable

维基百科,自由的百科全书
跳转至: 导航搜索

Quoted-printable,或QP encoding,没有规范的中文译名,可译为“可打印字符引用编码”、“使用可打印字符的编码”。Quoted-printable是使用可打印的ASCII字符 (如字母、数字与"=")表示各种编码格式下的字符,以便能在7-bit数据通路上传输8-bit数据, 或者更一般地说在非8-bit clean媒体上正确处理数据[註 1]。这被定义为MIME content transfer encoding,用于e-mail

QP使用"="开头的转义字符. 一般限制行宽为76,因为有些软件限制了行宽.

 综述 [编辑]

MIME定义了在e-mail中发送各种信息的方法, 包括非英语的其它语言文本信息, 使用非ASCII的其它字符编码. 这些编码常常使用ASCII范围以外的值来编码字符,因此需要进一步被编码以便适用于non-8-bit-clean环境. Quoted-printable编码就是把任意字节序列映射为ASCII字符序列. Quoted-printable自身并不是一种字符编码方案, 而是一种在面向字节的编码时的数据编码布置(data coding layer),即由编码的字符序列如何表示为字节流QP是可逆的,即可以由原来的非ASCII字符流与QP编码后的字节流来回转换而不失信息.

Quoted-printable与Base64是两种基本的MIME内容传输编码, 如果通常的"8bit"编码不适用. 如果文本不含很多非ASCII字符,quoted-printable编码的结果的可读性相当好[註 2]而且紧凑. 但是,如果输入的大多数是非ASCII字符,那么quoted-printable编码将变得既不可读又非常低效. Base64并不是人可读的,但对于所有数据其成本均匀,适用于二进制数据与非拉丁字母语言文本。

 Quoted-printable编码 [编辑]

任何8-bit字节值可编码为3个字符:一个等号"="后跟随两个十六进制数字(0–9或A–F)表示该字节的数值. 例如,ASCII码换页符(十进制值为12)可以表示为"=0C", 等号"="(十进制值为61)必须表示为"=3D". 除了可打印ASCII字符与换行符以外,所有字符必须表示为这种格式.

所有可打印ASCII字符(十进制值的范围为33到126)可用ASCII字符编码来直接表示, 但是等号"="(十进制值为61)不可以这样直接表示.

ASCII的水平制表符(tab)与空格符, 十进制为9和32, 如果不出现在行尾则可以用其ASCII字符编码直接表示。如果这两个字符出现在行尾,必须QP编码表示为"=09" (tab)或"=20" (space).

如果数据中包含有意义的行结束标志,必须转换为ASCII回车(CR)换行(LF)序列,既不能用原来的ASCII字符也不能用QP编码的"="转义字符序列。 相反,如果字节值13与10有其它的不是行结束的含义,它们必须QP编码为=0D与=0A.

quoted-printable编码的数据的每行长度不能超过76个字符. 为满足此要求又不改变被编码文本,在QP编码结果的每行末尾加上软换行(soft line break). 即在每行末尾加上一个"=", 但并不会出现在解码得到的文本中. 这种软换行也适用于文本的行非常长,超过了软件限制(例如,某些SMTP软件要求最大行长为1000个字符),这也是RFC 2821允许的.

一个轻微修改的quoted-printable用于消息头(message header); 参见MIME#Encoded-Word.

 例子 [编辑]

If you believe that truth=3Dbeauty, then surely=20=
mathematics is the most beautiful branch of philosophy.

这是下述字符串的QP编码:

If you believe that truth=beauty, then surely mathematics is the most beautiful branch of philosophy.

类似编码方法[编辑]

注释[编辑]

  1. ^ 历史上,e-mail过去被认为是non-8-bit-clean, 因为不同的媒体被用来传输处理e-mail,有的并不是Internet. 现代ESMTP服务器是8-bit clean在大多数情况,参见8BITMIME.
  2. ^ 这意味着使用了一种ASCII兼容编码. 而文本例如是EBCDIC编码的,QP编码后当然就不可读了.

参考文献[编辑]

外部链接[编辑]

参见[编辑]