本文主要介绍引用打印编码的介绍以及引用打印编码和解码的转换方法。有需要的朋友可以参考一下。
Quoted-printable可以翻译为“可打印字符的参考代码”和“使用可打印字符的代码”。我们在收到邮件,查看信件原始信息时,经常会看到这种类型的代码!
很多时候,我们可以在邮件头看到这段代码!内容-传输-编码:引用-可打印
它是多用途互联网邮件扩展(MIME)的实现。MIME是一种互联网标准,它扩展了电子邮件标准,并致力于使其能够支持非ASCII字符、二进制格式附件和其他格式的电子邮件。目前很多http协议都采用MIME框架!引号-printable是指用一些常用的可打印字符来表示一个字节(8位)中所有的不可打印字符!
Quoted-printable编码方法
任何8位字节值都可以编码成3个字符:一个等号“=”,后跟两个十六进制数字(09或AF)来表示字节值。比如ASCII码分页符(十进制值为12)可以表示为“=0C”,等号“=”(十进制值为61)必须表示为“=3D”
所有可打印的ASCII字符(十进制值的范围是33到126)都可以用ASCII字符代码直接表示,但是等号“=”(十进制值是61)不能用这种方式直接表示。ASCII的水平制表符和空格字符,十进制值为9和32,如果没有出现在行尾,可以直接用它们的ASCII字符代码表示。如果这两个字符出现在行尾,则必须用QP编码表示为“=09”(制表符)或“=20”(空格)。
如果数据包含有意义的行尾标记,则必须将其转换为ASCII回车(CR)换行符(LF)序列,并且不能使用原始ASCII字符或QP编码的“=”转义字符序列。相反,如果字节值13和10具有除行尾之外的其他含义,则它们必须被qpcoded为=0D和=0A。
每行可打印编码数据的长度不能超过76个字符。为了在不改变编码文本的情况下满足这一要求,在QP编码结果的每一行的末尾添加了一个软换行符。也就是在每一行的末尾加一个“=”,但它不会出现在解码后的文本中。
如果你相信真理=美,那么数学无疑是哲学中最美丽的分支。编码后的结果是
如果你相信真实=三维美,那么肯定=20=
数学是哲学中最美的分支。
编码中有几个特定的限制。有些可打印字符不需要编码。当然,如果你按照规范编码,也可以显示出来!所以只需自己实现代码:
函数quoted _ printable _ encode($ string){
返回preg_replace(/[^rn]{73}[^=rn]{2}/, $0=rn ,str_replace(% ,=,
rawurlencode($ string)));
}
可以使用一个函数。在所有字符串urlencode被转换后,%符号被替换为“=”符号,然后对于超过73的非连续字符,在它们后面添加一个=。这是一个简单的实现方法!根据代码的详细描述,有一些空格,换行符,以及一些不需要转换的特殊字符。但是,一起换算也不会有什么区别!
很多时候,我们用一些常用字符来表示其他所有8位非打印字符。这种带引号的可打印编码只是在字节转换成十六进制后加一个前缀!然后做一些特殊的字符处理!很简单,而且编码效率高,这也使得邮件格式的编码得到了广泛的应用!好了,就这样,欢迎交流!