Quoted-Printable也是MIME邮件中常用的编码方式之一。同Base64一样,它也将输入的字符串或数据编码成全是ASCII码的可打印字符串。
  Quoted-Printable编码的基本方法是:输入数据在33-60、62-126范围内的,直接输出;其它的需编码为“=”加两个字节的HEX码(大写)。为保证输出行不超过规定长度,可在行尾加“=/r/n”序列作为软回车。
  int EncodeQuoted(const unsigned char* pSrc, char* pDst, int nSrcLen, int nMaxLineLen)
  {
   int nDstLen; // 输出的字符计数
   int nLineLen; // 输出的行长度计数
   nDstLen = 0;
   nLineLen = 0;
   for (int i = 0; i < nSrcLen; i++, pSrc++)
   {
   // ASCII 33-60, 62-126原样输出,其余的需编码
   if ((*pSrc = '!') && (*pSrc '~') && (*pSrc != '='))
   {
   *pDst++ = (char)*pSrc;
   nDstLen++;
   nLineLen++;
   }
   else
   {
   sprintf(pDst, "=%02X", *pSrc);
   pDst += 3;
   nDstLen += 3;
   nLineLen += 3;
   }
   // 输出换行?
   if (nLineLen = nMaxLineLen - 3)
   {
   sprintf(pDst, "=/r/n");
   pDst += 3;
   nDstLen += 3;
   nLineLen = 0;
   }
   }
   // 输出加个结束符
   *pDst = '/0';
   return nDstLen;
  }
  Quoted-Printable解码很简单,将编码过程反过来就行了。
  int DecodeQuoted(const char* pSrc, unsigned char* pDst, int nSrcLen)
  {
   int nDstLen; // 输出的字符计数
   int i;
   i = 0;
   nDstLen = 0;
   while (i < nSrcLen)
   {
   if (strncmp(pSrc, "=/r/n", 3) == 0) // 软回车,跳过
   {
   pSrc += 3;
   i += 3;
   }
   else
   {
   if (*pSrc == '=') // 是编码字节
   {
   sscanf(pSrc, "=%02X", pDst);
   pDst++;
   pSrc += 3;
   i += 3;
   }
   else // 非编码字节
   {
   *pDst++ = (unsigned char)*pSrc++;
   i++;
   }
  
   nDstLen++;
   }
   }
   // 输出加个结束符
   *pDst = '/0';
   return nDstLen;
  }

Quoted-Printable编码实现相关推荐

  1. Python3 完成 QUOTED-PRINTABLE 编码及反翻译

    想生成一个vcf时遇到了从字符串到 Quoted Printable编码转换的问题 1. 从手机里导出的vcf是这样的格式: BEGIN:VCARD VERSION:2.1 N;CHARSET=UTF ...

  2. 邮件乱码破解大全(转贴)

    在接收电子邮件时有时会发现邮件中的内容一片混乱,无法阅读.这主要是发.收邮件的编码和解码方式不统一造成的.本文介绍乱码生成的原理,并使用常用的收发E-mail的工具成功地模拟出各种编码方式造成的乱码, ...

  3. Python标准库介绍

    1. 关于Python标准库 众所周知,Python是一个依赖强大的组件库完成对应功能的语言,为了便捷实现各项功能,前辈大牛们打造了多种多样的工具库公开提供给大众使用,而越来越多的库已经因为使用的广泛 ...

  4. Asp.net的加密解密技巧--[转载]

    对于加密和解密,我们都知道.下面主要介绍的是ASP.NET中的加密和解密. 一.数据加密/编码算法列表 常见用于保证安全的加密或编码算法如下: 1.常用密钥算法 密钥算法用来对敏感数据.摘要.签名等信 ...

  5. Windows XP SP2疑难速解50问

    一.SP2的十大亮点 要想系统地了解Windows XP SP2可能会引起的问题,并快速诊断问题的原因所在,应先对Windows XP SP2的新功能有个基本的了解,这就是Windows XP S ...

  6. Linux网络编程基础_6_应用层(下)--E-mail,WWW(大结局)

    应用层(下) --E-mail,WWW 一.E-mail/电子邮件系统 1.电子邮件系统的组成结构 1)MTS(MessageTansfer System),邮件传输系统. 2)UA(UserAgen ...

  7. Python菜鸟学习手册14----标准库+代码实例

    Python Standard Library 翻译: Python 江湖群 10/06/07 20:10:08 编译 0.1. 关于本书 0.2. 代码约定 0.3. 关于例子 0.4. 如何联系我 ...

  8. Python3.x 标准模块库目录(下篇)

    Python Standard Library 翻译: Python 江湖群 10/06/07 20:10:08 编译 0.1. 关于本书 0.2. 代码约定 0.3. 关于例子 0.4. 如何联系 ...

  9. MIME类型,Content-Type

    //指定返回的是一个不能被客户端读取的流,必须被下载                Response.ContentType = "application/x-msdownload" ...

  10. MIME类型是什么意思

    MIME MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开.多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方 ...

最新文章

  1. python将数字转变为中文读法-python中将阿拉伯数字转换成中文的实现代码
  2. asp.net使用mysql教程_在C#程序中使用MYSQL数据库
  3. php 搜索名称或者编号,ECSHOP商品关键词模糊分词搜索插件,商品列表关键字加红功能-ecshop插件网...
  4. matlab gui打开fig文件,求助gui打开word文件及打开fig格式图片
  5. php实现页面雪花效果,JavaScript_使用javascript实现雪花飘落的效果,看了javascript网页特效实例大全 - phpStudy...
  6. (java ee,Eclipse J2EE最新版官方下载(Eclipse for Java EE Developers)
  7. python 编码问题之终极解决
  8. windows mysql5.7 忘记root密码
  9. 用postman做接口测试
  10. 软工专硕考研_2021考研人数将突破400万?录取率或成史低!
  11. 音乐后期处理:音乐失真效果制作
  12. 解决Carsim2016找不Liscens问题
  13. 【嵌入式模块】直流电机驱动L298N,TB6612详解
  14. 九章算术 五:《商功》
  15. Ubuntu下给Wine设置微软雅黑字体(4步操作)
  16. 微信PC端多开的秘密
  17. 【计算机毕业设计】外卖点餐源码
  18. python自动化测试登录_自动化测试(二)如何用python写一个用户登陆功能
  19. Xcode8/iOS10 升级后遇到的问题小结
  20. 掌握茼蒿施肥方式,想不高产都难。

热门文章

  1. 天昊生物16S扩增子绝对定量测序技术助力客户登陆Science of the Total Environment
  2. 分享阿里开源的一个流程图,工作流图插件g6
  3. OPPOA33_官方线刷包_救砖包_解账户锁
  4. 4K Wallpaper mac(4K壁纸软件) v2.1中文激活版
  5. 怎么判断一个回文字符串
  6. 小程序客服六大痛点总结!(附解决方案)
  7. java 协程线程的区别_用大白话讲进程和线程、协程的区别
  8. iOS后台音频播放及锁屏界面显示音频信息
  9. userdel 命令
  10. 运行Redshift需要什么样的电脑?如何选电脑配置