`

Quoted-Printable编码

    博客分类:
  • c++
 
阅读更多
http://www.cnblogs.com/robinhood/articles/540471.html

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 编码介绍、Quoted-printable编码解码转换方法

    Quoted-printable编码是一种用于电子邮件传输中的字符编码方案,它允许文本包含一些非ASCII字符,同时保持邮件的可读性。Quoted-printable编码利用可打印的ASCII字符来表示原始数据中可能无法直接显示的字节,尤其是...

    C# Quoted-Printable编码、解码

    C# Quoted-Printable编码与解码是邮件传输标准中处理非ASCII字符的一种编码方式,它广泛应用于电子邮件系统中。Quoted-Printable编码格式能够让普通文本邮件中包含非ASCII字符,同时保持邮件的可读性和兼容性。在C#...

    Quoted_Printable编码解码易语言源码

    Quoted_Printable编码是一种在电子邮件和网页中常见的字符编码方式,用于在ASCII字符集中表示非ASCII字符,确保数据在传输过程中不会被误解或丢失。这种编码方式特别适用于7位ASCII字符集不能涵盖的字符,例如某些...

    smtp.tar.gz_quoted-printable

    `quoted-printable`编码就是这样的一个方法,它是RFC 2045和RFC 2047中定义的一种编码方式,主要用于在邮件主体中保持可读性。 `quoted-printable`编码的主要目的是将非ASCII字符转换为ASCII,确保邮件内容在传输...

    MIME Quoted Printable &amp; Base64 编码解码程序

    Quoted-Printable编码通过在每个可打印字符前添加等号(=)来表示,对于非ASCII字符,会将其转换为ASCII的十六进制表示形式,例如,空格会被编码为"=20"。这种编码方式通常用于包含大量可打印字符的文本数据,如HTML...

    常用编码VBA.zip

    在"常用编码VBA.zip"这个压缩包中,包含了一系列用于处理不同编码方式的VBA宏,如Base64编码、Quoted-Printable编码、URL编码、UTF8编码和Unicode编码。 1. **Base64编码**:Base64是一种用64个字符来表示任意二...

    qp.rar_mime QP_qp_quoted printable_字节base64_邮件 ASCII

    Quoted-Printable编码的基本方法是:输入数据在33-60、62-126范围内的,直接输出;其它的需编码为“=”加两个字节的HEX码(大写)。为保证输出行不超过规定长度,可在行尾加“=\r\n”序列作为软回车。

    易语言-Quoted_Printable编码解码易语言

    总的来说,易语言的Quoted_Printable编码解码源码提供了学习和应用字符编码技术的一个实例,通过理解并实践这个例子,我们可以更好地掌握易语言的字符串处理技巧,并且加深对编码解码原理的理解。同时,这也是一个很...

    C# 生成VCF demo源代码,支持Android,outlook QuotedPrintable 中文编码

    本demo源代码主要关注的是在处理中文字符时的编码问题,特别是使用Quoted-Printable编码来确保中文字符在传输过程中的正确性。 Quoted-Printable编码是Internet编码的一种,常用于包含非ASCII字符的数据,例如邮件...

    base64和quoted编码,解码的源码

    Base64和Quoted-Printable编码是两种常见的数据编码方式,它们被广泛应用于网络通信、电子邮件、文本传输等领域,以确保数据在不同系统间安全、正确地传递。 Base64编码是一种基于64个字符的编码方法,这64个字符...

    Quoted_Printable 解码-编码 -易语言

    在易语言中,理解和实现Quoted_Printable编码与解码是提高程序处理文本信息能力的重要一环。 Quoted_Printable 编码的基本原理是将每个8位的字节拆分为7位的ASCII字符,对于那些不能直接作为ASCII字符的字节,通常...

    excel和vcf互转工具

    用途:使用excel编辑联系人,导出vcf文件 ------------------------------------------------------------ ...4、支持备注QUOTED-PRINTABLE编码解码 5、支持项目多值(多个工作电话号码,传真,QQ等)

    CTF中那些脑洞大开的编码和加密[汇编].pdf

    本文总结了CTF中常见的编码和加密方法,涵盖了ASCII编码、Base64/32/16编码、shellcode编码、Quoted-printable编码、XXencode编码、UUencode编码、URL编码、Unicode编码、Escape/Unescape编码、HTML实体编码、敲击码...

    电子邮件编码解码易语言源码

    接着是Quoted-Printable编码,这是另一种常见的电子邮件编码方式,主要用于在文本邮件中保持可读性。它将非ASCII字符或可能在传输过程中被误解的字符替换为其等效的十六进制值,并在每个字符前加上等号(=)。Quoted...

    java对mht文件解析

    MHT文件中的内容可能采用了Quoted-Printable编码方式来表示非ASCII字符。因此,在处理之前需要对其进行解码。 ```java public static String decodeQuotedPrintable(String str, String encoding) { // 实现Quoted...

    VCF转CSV,适用所有设备导出的VCF文件

    VCF(Virtual Contact File)是一种常见的用于存储个人数字助手(PDA)或电子邮箱系统中的联系人信息的文件格式。它是由Internet工程任务组(IETF)定义的标准,以XML为基础,用来方便地交换联系人数据。...

    用C写的电子邮件解码程序

    根据提供的文件信息,本文将详细解析“用C写的电子邮件解码程序”中涉及的主要编码算法:Base64、Quoted-Printable、7bit 和 8bit 的解码原理及其实现方法。 ### 一、Base64 解码 #### 1.1 基本概念 Base64 是一种...

    UTF-8_GB2312-Src

    《UTF-8与GB2312编码转换在电话本管理中的应用》 在数字化信息时代,字符编码标准是确保不同设备和系统间数据交换的关键因素。本文将深入探讨两个常见的中文字符编码——UTF-8和GB2312,并以三星手机电话本为例,...

    关于E-Mail信体的基本编码和解码方法email_coder.zip_E.ON mail_email_mail_quoted-

    提供关于E-Mail信体的基本编码和解码方法包括 Base64, UUCode, Quoted-Printble编解码速度快 全兼容Outlook Express 部分关键代码说明 全部类静态方法 毋需创建实例即可使用 使用说明 首先使用CMailCoder提供的获取...

    MIME协议分析 MIME

    - **编码与字符集**:如`Content-Transfer-Encoding: quoted-printable`表明邮件内容使用了Quoted-Printable编码,`charset="GB2312"`指定了字符集为简体中文GB2312。 - **邮件体**:邮件体可以包含编码后的文本或...

Global site tag (gtag.js) - Google Analytics