Quoted-printable 编码介绍、Quoted-printable编码解码转换方法

 更新时间:2016年06月04日 23:53:22   投稿:mdxy-dxy  
这篇文章主要介绍了Quoted-printable 编码介绍、Quoted-printable编码解码转换方法,需要的朋友可以参考下

Quoted-printable 可译为“可打印字符引用编码”、“使用可打印字符的编码”,我们收邮件,查看信件原始信息,经常会看到这种类型的编码!

最多时候,我们在邮件头里面能够看到这样的编码!Content-Transfer-Encoding:quoted-printable

它是多用途互联网邮件扩展(MIME) 一种实现方式。其中MIME是一个互联网标准,它扩展了电子邮件标准,致力于使其能够支持非ASCII字符、二进制格式附件等多种格式的邮件消息。目前http协议中,很多采用MIME框架!quoted-printable 就是说用一些可打印常用字符,表示一个字节(8位)中所有非打印字符方法!

Quoted-printable编码方法

任何一个8位的字节值可编码为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). 即在每行末尾加上一个”=”, 但并不会出现在解码得到的文本中.

例如:If you believe that truth=beauty, then surely mathematics is the most beautiful branch of philosophy. 编码后结果是

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

编码里面,有几个特定限定,一些可打印字符不用编码,当然如果你按照规范编码后,也一样可以显示的!因此自己简单自己实现该编码:

function quoted_printable_encode($string) { 
  return preg_replace('/[^\r\n]{73}[^=\r\n]{2}/', "$0=\r\n", str_replace("%","=",
rawurlencode($string))); 
}

一个函数就可以,将所有字符串urlencode转换后,%号替换为”=”号,然后对非\r\n超过73连续字符,后面加一个=\r\n。这个是简单实现方法! 按照该编码详细说明里面,有些空格、换行,还有一些特殊字符可以不用转换。不过一起转换了,也不会有影响!

很多时候,我们用些常见字符表示所有8位其它非打印字符,这种通过,Quoted-printable编码,只是对该字节转为16进制后,做简单增加前缀!然后做些特殊字符处理即可! 它的简单,及编码高效,也让该编码在邮件格式里面,得到了广泛使用!好了,就到这里,欢迎交流!

您可能感兴趣的文章:

相关文章

  • 调用DeepSeek API的详细指南

    调用DeepSeek API的详细指南

    章详细介绍了如何在DeepSeek开放平台上获取API密钥,并使用Apifox进行API调试,步骤包括登录平台、创建和保存APIKey、配置Apifox环境变量、导入cURL并设置Authorization、发送请求以及根据需要修改参数实现对话和流式输出,需要的朋友可以参考下
    2025-02-02
  • Chrome拓展(Chrome Extension)开发定时任务插件

    Chrome拓展(Chrome Extension)开发定时任务插件

    文章讲述了如何在ChromeExtension中实现定时任务,包括使用chrome.alarmsAPI、结合contentscript的状态感知定时器和基于事件触发的模拟定时,文章强调了任务的幂等性、状态的持久化存储、记录执行日志和防止重复执行的重要性
    2025-04-04
  • MATLAB教程数据运算变量操作及矩阵表示详解

    MATLAB教程数据运算变量操作及矩阵表示详解

    这篇文章主要介绍了MATLAB关于数据运算变量操作及矩阵表示的内容详解,有需要的朋友可以借鉴参考下,希望可以有所帮助,祝大家多多进步
    2021-09-09
  • ChatGPT平替-ChatGLM环境搭建与部署运行效果

    ChatGPT平替-ChatGLM环境搭建与部署运行效果

    这篇文章主要介绍了ChatGPT平替-ChatGLM环境搭建与部署运行,本节将介绍环境搭建与基本部署效果,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • 使用Windows自带的IIS服务搭建本地站点并远程访问的操作方法

    使用Windows自带的IIS服务搭建本地站点并远程访问的操作方法

    在Windows系统中实际上集成了建立网站所必须的软件环境,今天就让我们来看看,如何使用Windows自带的网站程序建立网站吧,感兴趣的朋友一起看看吧
    2023-12-12
  • 使用curl命令行模拟登录WordPress的方法

    使用curl命令行模拟登录WordPress的方法

    这篇文章主要介绍了使用curl命令行模拟登录WordPress的方法,本文通过图文实例相结合给大家介绍的非常详细,需要的朋友可以参考下
    2019-11-11
  • 利用二进制文件安装etcd的教程详解

    利用二进制文件安装etcd的教程详解

    etcd组件作为一个高可用强一致性的服务发现存储仓库.这篇文章主要介绍了利用二进制文件安装etcd的教程详解,需要的朋友可以参考下
    2019-08-08
  • Typora 0.11.18免费版本安装使用教程(亲测可用)

    Typora 0.11.18免费版本安装使用教程(亲测可用)

    Typora是一款非常使用的笔记工具,对于程序员非常友好,在2021年11月23日,Typora 正式发布 1.0 版本,进入了付费时代,Typora免费版本0.11.18(最后的免费版),本文给大家分享Typora免费获取方法及安装使用教程,感兴趣的朋友参考下吧
    2022-07-07
  • 微信小程序应用号开发体验

    微信小程序应用号开发体验

    这篇文章主要介绍了微信小程序(应用号)开发体验的相关资料,需要的朋友可以参考下
    2016-09-09
  • MobaXterm 安装使用图文教程

    MobaXterm 安装使用图文教程

    MobaXterm是一款SSH客户端,连接并操作Linux服务器,这篇文章主要介绍了MobaXterm安装使用图文教程,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05

最新评论