QP(Quote-Printable) 编码
QP(Quote-Printable) 方法,通常缩写为“Q”方法,其原理是把一个
8 bit 的字符用两个16进制数值表示,然后在前面加“=”。所以我们看到经过QP编码
后的文件通常是这个样子:=B3=C2=BF=A1=C7=E5=A3=AC=C4=FA=BA=C3=A3=A1。
Quoted-Printable 加码规则(RFC 1341):
1. 字符用 =XX 形式表示,其中 XX 是该字符的十六进制值,
必须为 0-9 或者 A-F (使用大写字符),除非有可替换说明,
否则,此原则是强制性的。
2. 其中,十进制值 33-60 & 62-126(注意: 即不包含 '= ' )
可以作为标准 ASCII 从而不进行转换。
3. 另外,十进制值 9-32 也可以作为制表和格式控制字符,
从而不进行转换。(注意,这个不是必须执行的,即也可以转换)
4. 由于在 RFC822 协议中规定主体 body 文本中各行均有最大字
符限制,因此,当主体文本中出现 CRLF(carriage return/line feed)或者 LFCR 字符序列,
或者单独的 CR 以及 LF 字符的时候,必须转换成对应的
"=0D=0A ", "=0A=0D ", "=0D ", "=0A " 等编码来表示。
5. (关于软回车的问题) Quoted-Printable 编码要求编码后每行
最大字符数量不得超过 76 个字符。如果对大于该字符数量的行进
行编码,则必须使用软回车。所以,对于某个以编码行的最后加上
'= '符号,则表示最后这个 '= ' 是一个无意义的软回车。所以,如
果一个尚未编码的行的内容如下的话:
Now 's the time for all folk to come to the aid of their country.
那么在 Quoted-Printable 中可以表示为:
Now 's the time =
for all folk to come=
to the aid of their country.
他提供了一种对过长的行进行编码并恢复到用户原来的输入内容的
机制。虽然一行的末尾的 CRLF 不计入 76 个字符的限制之中,但
是所有的其他字符,包括 '= ' 符号都将被计算在内。
由于连字符号 '- ' 在 Quoted-Printable 编码中表示他自己,所以当
我们在对一个 multipart 实体的主体内容编码的时候,我们必须注
意:我们决不能让一个 boundary 标志符出现在编码的主体部分!
(一个比较好的办法是在 boundary 中包含一个 "=_ ",这样就决不会重复
了,具体情况清查阅 RFC 1341 中的 multipart message 的定义部分。)
注意:采用 Quoted-Printable 编码是邮件的传输过程中,对于易读性
和可靠性折衷的一种编码。对于使用 Quoted-Printable 编码的邮件主
体,绝大多数邮件网关(mail gateway)都能够可靠的工作,但是也可能
在极少的邮件网关上工作的并不十分好,最显著的莫过于涉及到那些
EBCDIC 的传输的时候。(理论上来说, EBCDIC 网关能够对 Quoted-Pintable
编码进行解码,然后使用 Base64 编码来重新对主体内容进行编码,但是
这些网关在实际中还没有出现呢。)
对于更高的要求,我们使用 Base64 编码。一种适度可信的传输通过
EBCDIC 网关的方法就是依照 [规则 1] 引用如下的 ASCII 码:
! "#$@[\]^`{|}~
更多信息请查看 RFC1341 的 [附录 B]。
由于被 Quoted-Printable 编码的数据通常被认为是行导向的(line-oriented),
对于使用 Quoted-Printable 编码的数据我们希望行与行之间换行符在传输中被
改写(译者注:由于不同的系统 unix, windows, mac得换行符不同),同样的,我
们希望一封普通文本文件内容的邮件(plain text mail)可以在不同的系统中转换
成不同换行符的互联网邮件(Internet mail)。如果这种转换可能导致原始数据大
量变化(a corruption of the data),那么比较明智的选择是应用 base64 编码,
来替换 Quoted-Printable 编码!
引:http://topic.csdn.net/t/20031008/20/2334682.html
QP(Quote-Printable) 编码的更多相关文章
- urlencode编码问题(以及urlparse) 转
网址链接中的中文编码 中文的gbk(GB2312)编码: 一个汉字对应两组%xx,即%xx%xx 中文的UTF-8编码: 一个汉字对应三组%xx,即%xx%xx%xx 可以利用百度进行URL编码解码 ...
- python 爬虫抓取心得
quanwei9958 转自 python 爬虫抓取心得分享 urllib.quote('要编码的字符串') 如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以用: urllib.quo ...
- python urllib和urllib3包使用
urllib包 urllib是一个包含几个模块来处理请求的库.分别是: urllib.request 发送http请求 urllib.error 处理请求过程中,出现的异常. urllib.parse ...
- 《精通python网络爬虫》笔记
<精通python网络爬虫>韦玮 著 目录结构 第一章 什么是网络爬虫 第二章 爬虫技能概览 第三章 爬虫实现原理与实现技术 第四章 Urllib库与URLError异常处理 第五章 正则 ...
- (转)Python3 模块3之 Urllib之 urllib.parse、urllib.robotparser
原文:https://blog.csdn.net/qq_36148847/article/details/79153738 https://blog.csdn.net/zly412934578/art ...
- python urllib和urllib3包使用(转载于)
urllib.request 1. 快速请求 2.模拟PC浏览器和手机浏览器 3.Cookie的使用 4.设置代理 urllib.error URLError HTTPError urllib.par ...
- python、Java、大数据和Android的薪资如何?
莫名其妙,从去年年底开始,Python这个东西在中国,突然一下子就火起来了,直至现在,他的热度更是超越了java,成为软件工程师最为关注的话题.Python之所以能火起来,很大一方面是因为大数据.人工 ...
- python 抓取搜狗微信出现的问题,求大神解决
爬取到的data不是想要获取文章页面的源码,而是跳转到验证码的页面的源码.我网上查了一下是由于访问过于频繁导致的,我也加了time.sleep和改了请求头但还是显示不了,求大神支招,除了识别验证码的方 ...
- 02-urllib库的get请求方式
对于urllib中的get请求方式,可以直接传入url的连接即可访问页面,但是对于要传入关键字的话,也可以用quote进行编码再传入. 案例如下: #get请求搜索参数如何添加 import urll ...
- urllib库使用方法 2 parse
import urllib.parse #url.parse用法包含三个方法:quote url, unquote rul, urlencode#quote url 编码函数,url规范只识别字母.数 ...
随机推荐
- LeetCode——数组篇:659. 分割数组为连续子序列
659. 分割数组为连续子序列 输入一个按升序排序的整数数组(可能包含重复数字),你需要将它们分割成几个子序列,其中每个子序列至少包含三个连续整数.返回你是否能做出这样的分割? 示例 1: 输入: [ ...
- Oracle Data Provider for .NET Support for Microsoft .NET Core
Oracle Data Provider for .NET Support for Microsoft .NET Core的官方地址,记录下来,按照官方描述,会在2017年底左右发布,暂时还没有看到相 ...
- 20155227 2016-2017-2 《Java程序设计》第一周学习总结
20155227 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 浏览教材,根据自己的理解每章提出一个问题 Java三个平台的区别. JDK.JRE.JVM区 ...
- 第六周课上测试-3-ch02补充作业
实验要求: 编写一个程序 "week0603学号.c",运行下面代码: short int v = -学号后四位 unsigned short uv = (unsigned sho ...
- 20145226夏艺华 《Java程序设计》第2周学习总结
教材学习内容总结 学习目标 了解Java编程风格 认识Java的类型与变量 掌握Java流程控制的方法(分支.循环) 教材第三章内容总结 认识类型与变量 学习运算符的基本使用 了解类型转换细节 运用基 ...
- Zabbix学习之路(四)之Web监控
1.Zabbix监控web服务器访问性能 zabbix 对 web 性能的监控,通过它可以了解 web 站点的可用性以及性能.最终将各项指标绘制到图形中,这样我们可以了解到一个站点的下载速度.响应速度 ...
- spark on yarn 资源调度(cdh为例)
一.CPU配置: ApplicationMaster 虚拟 CPU内核 yarn.app.mapreduce.am.resource.cpu-vcores ApplicationMaster占用的cp ...
- 9.15 DP合集水表
9.15 DP合集水表 显然难了一些啊. 凸多边形的三角剖分 瞄了一眼题解. 和蛤蛤的烦恼一样,裸的区间dp. 设f[i][j]表示i~j的点三角剖分最小代价. 显然\(f[i][i+1]=0,f[i ...
- 怎样安装TortoiseGit
TortoiseGit是基于Windows的Git图形化工具 访问 https://tortoisegit.org/
- Jmeter如何做接口测试
最近在学习Jmeter,记录下来,与大家分享. 1. 打开Jmeter,我用的是5.0版本,打开后如下图所示: 2. 右键测试计划,添加 - 线程(用户) - 线程组,如下如图所示: 3. 右键线程组 ...