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) 编码的更多相关文章

  1. urlencode编码问题(以及urlparse) 转

    网址链接中的中文编码 中文的gbk(GB2312)编码: 一个汉字对应两组%xx,即%xx%xx 中文的UTF-8编码: 一个汉字对应三组%xx,即%xx%xx%xx 可以利用百度进行URL编码解码 ...

  2. python 爬虫抓取心得

    quanwei9958 转自 python 爬虫抓取心得分享 urllib.quote('要编码的字符串') 如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以用: urllib.quo ...

  3. python urllib和urllib3包使用

    urllib包 urllib是一个包含几个模块来处理请求的库.分别是: urllib.request 发送http请求 urllib.error 处理请求过程中,出现的异常. urllib.parse ...

  4. 《精通python网络爬虫》笔记

    <精通python网络爬虫>韦玮 著 目录结构 第一章 什么是网络爬虫 第二章 爬虫技能概览 第三章 爬虫实现原理与实现技术 第四章 Urllib库与URLError异常处理 第五章 正则 ...

  5. (转)Python3 模块3之 Urllib之 urllib.parse、urllib.robotparser

    原文:https://blog.csdn.net/qq_36148847/article/details/79153738 https://blog.csdn.net/zly412934578/art ...

  6. python urllib和urllib3包使用(转载于)

    urllib.request 1. 快速请求 2.模拟PC浏览器和手机浏览器 3.Cookie的使用 4.设置代理 urllib.error URLError HTTPError urllib.par ...

  7. python、Java、大数据和Android的薪资如何?

    莫名其妙,从去年年底开始,Python这个东西在中国,突然一下子就火起来了,直至现在,他的热度更是超越了java,成为软件工程师最为关注的话题.Python之所以能火起来,很大一方面是因为大数据.人工 ...

  8. python 抓取搜狗微信出现的问题,求大神解决

    爬取到的data不是想要获取文章页面的源码,而是跳转到验证码的页面的源码.我网上查了一下是由于访问过于频繁导致的,我也加了time.sleep和改了请求头但还是显示不了,求大神支招,除了识别验证码的方 ...

  9. 02-urllib库的get请求方式

    对于urllib中的get请求方式,可以直接传入url的连接即可访问页面,但是对于要传入关键字的话,也可以用quote进行编码再传入. 案例如下: #get请求搜索参数如何添加 import urll ...

  10. urllib库使用方法 2 parse

    import urllib.parse #url.parse用法包含三个方法:quote url, unquote rul, urlencode#quote url 编码函数,url规范只识别字母.数 ...

随机推荐

  1. Makefile: (实验) 目标命令的结束标志

    实验表示测试出来的结论,没有代码理论依据 Makefile中,目标对应的命令结束标记是什么呢?换句话说,Make中怎么判断目标的最后一条命令? 例如常见的目标编写如下: test1: echo &qu ...

  2. gcd 模板

    声明 给 x,y 两个数,求 x,y 的最大公因数. 辗转相除法,直接套!!! function gcd(x,y:longint):longint; begin then exit(x) else e ...

  3. 20155210 潘滢昊 2016-2017-2 《Java程序设计》第3周学习总结

    20155210 2016-2017-2 <Java程序设计>第3周学习总结 教材学习内容总结 class xxx{ }:定义类 运用: class Clothes{ String col ...

  4. #2017-2018-1 20155327 《信息安全系统设计基础》实现mypwd

    2017-2018-1 20155327 <信息安全系统设计基础>实现mypwd Linux pwd命令用于显示工作目录. 执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称. p ...

  5. pycharm设置github

    1.打开file,选择settings,找到Version Contorl,打开找到GitHub ,HOST填github.com,用户名,密码,test,稍等一会,会提示成功 2. 设置好以后 打开 ...

  6. 关于js回调方法 js递归时使用方法

    js中递归调用本身可以这样: function a1(n){ a1(n)}但是如果需要在参数n进行自增的情况下判断会出错: function a1(n){ if(n>10) return 'aa ...

  7. jmeter接口测试实例:带参数、带token

      测试内容简介: 1.get请求,无参数 2.get请求,参数为第一条响应中的id 3.get请求,带token 结构图:     下面进行详解: 一.添加cookie管理器等     1.添加ht ...

  8. 【转】: 塞尔达组在GDC2017演讲的文字翻译:创新的勇气

    大家好,我是藤林秀麿,以导演的身份参与<荒野之息>的制作,感谢大家的出席.我曾经作为设计者和导演制作了诸多塞尔达游戏(大地与时空之章.缩小帽.四支剑.幻影沙漏.天空之剑),回首望去,我已经 ...

  9. [转载] Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例

    1.环境准备 ​ 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0.33 c4 -&g ...

  10. PIL包中图像的mode参数

    在这里的第一篇. 这篇的是为了说明PIL库中图像的mode参数. 我做的事情是: 在本地找了jpg的图,convert为不同mode,将不同的图截取做了个脑图,有个直观的感觉吧. 把不同mode的图通 ...