`
rayloo
  • 浏览: 86659 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

quoted-printable 编码与解码

阅读更多

quoted-printable 编码与解码

packagejavas;

importjava.io.ByteArrayOutputStream;
importjava.io.UnsupportedEncodingException;

publicclassTest
...{
publicstaticvoidmain(String[]arg)
...{
System.out.println(qpEncodeing(
"sd=fsd辰s西南地区dffdf=可耕地sdfsdff"+" "
+"sdfsd "+"可耕地zz"));
System.out.println(qpDecoding(qpEncodeing(
"sd=fsd辰s西南地区dffdf=可耕地sdfsdff"
+" "+"sdfsd "+"可耕地zz")));
}


/***//**
*quoted-printable编码就是这个方法
*/

publicstaticStringqpEncodeing(Stringstr)
...{
char[]encode=str.toCharArray();
StringBuffersb
=newStringBuffer();
for(inti=0;i<encode.length;i++)
...{
if((encode[i]>='!')&&(encode[i]<='~')&&(encode[i]!='=')
&&(encode[i]!=' '))
...{
sb.append(encode[i]);
}

elseif(encode[i]=='=')
...{
sb.append(
"=3D");
}

elseif(encode[i]==' ')
...{
sb.append(
"= ");
}

else
...{
StringBuffersbother
=newStringBuffer();
sbother.append(encode[i]);
Stringss
=sbother.toString();
byte[]buf=null;
try
...{
buf
=ss.getBytes("utf-8");
}

catch(UnsupportedEncodingExceptione)
...{
e.printStackTrace();
}

if(buf.length==3)
...{

for(intj=0;j<3;j++)
...{
Strings16
=String.valueOf(Integer.toHexString(buf[j]));
//抽取中文字符16进制字节的后两位,也就是=E8等号后面的两位,
//三个代表一个中文字符
charc16_6;
charc16_7;
if(s16.charAt(6)>=97&&s16.charAt(6)<=122)
...{
c16_6
=(char)(s16.charAt(6)-32);
}

else
...{
c16_6
=s16.charAt(6);
}

if(s16.charAt(7)>=97&&s16.charAt(7)<=122)
...{
c16_7
=(char)(s16.charAt(7)-32);
}

else
...{
c16_7
=s16.charAt(7);
}

sb.append(
"="+c16_6+c16_7);
}

}


}

}

returnsb.toString();
}


/***//**
*quoted-printable解码
*
*
@authorissuesr
*
@paramstr
*
@return
*@date2007-6-24
*/

publicfinalstaticStringqpDecoding(Stringstr)
...{
if(str==null)
...{
return"";
}

try
...{
StringBuffersb
=newStringBuffer(str);
for(inti=0;i<sb.length();i++)
...{
if(sb.charAt(i)==' '&&sb.charAt(i-1)=='=')
...{
//解码这个地方也要修改一下
//sb.deleteCharAt(i);
sb.deleteCharAt(i-1);
}

}

str
=sb.toString();
byte[]bytes=str.getBytes("US-ASCII");
for(inti=0;i<bytes.length;i++)
...{
byteb=bytes[i];
if(b!=95)
...{
bytes[i]
=b;
}

else
...{
bytes[i]
=32;
}

}

if(bytes==null)
...{
return"";
}

ByteArrayOutputStreambuffer
=newByteArrayOutputStream();
for(inti=0;i<bytes.length;i++)
...{
intb=bytes[i];
if(b=='=')
...{
try
...{
intu=Character.digit((char)bytes[++i],16);
intl=Character.digit((char)bytes[++i],16);
if(u==-1||l==-1)
...{
continue;
}

buffer.write((
char)((u<<4)+l));
}

catch(ArrayIndexOutOfBoundsExceptione)
...{
e.printStackTrace();
}

}

else
...{
buffer.write(b);
}

}

returnnewString(buffer.toByteArray(),"UTF-8");
}

catch(Exceptione)
...{
e.printStackTrace();
return"";
}

}

}

分享到:
评论
1 楼 qian_xin 2013-10-29  

相关推荐

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

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

    C# Quoted-Printable编码、解码

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

    Quoted_Printable编码解码易语言源码

    "QuotedPrintable编码解码易语言源码"这个项目可能包含了一个或多个易语言模块,这些模块包含了用于编码和解码Quoted_Printable的函数。这些函数可能包括: 1. `Encode_Quoted_Printable`: 这个函数将输入的字符串...

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

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

    smtp.tar.gz_quoted-printable

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

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

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

    Quoted_Printable 解码-编码 -易语言

    在提供的压缩包文件"Quoted_Printable 解码-编码.e"中,很可能是包含了用易语言编写的Quoted_Printable编码和解码的源代码示例。通过研究和理解这段代码,开发者可以深入学习如何在易语言环境下实现这一编码技术,这...

    base64和quoted编码,解码的源码

    在提供的源码中,`public_interface.c`和`public_interface.h`很可能是包含Base64和Quoted-Printable编码/解码功能的接口文件。在`public_interface.c`中,可能会定义一些函数,如`base64_encode`、`base64_decode`...

    常用编码VBA.zip

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

    邮件编码解码工具 md5,base64,qp编码解码,非常小巧有用

    md5,base64,qp编码解码,非常小巧有用

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

    提供关于E-Mail信体的基本编码和解码方法包括 Base64, UUCode, Quoted-Printble编解码速度快 全兼容Outlook Express 部分关键代码说明 全部类...然后根据取得的长度分配空间然后调用相应的编码解码函数进行操作就行了

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

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

    各种形式的编码解码工具

    收集整理了各种通过JAVASCRIPT编码解码工具 支持转换的有 \uXXXX \UXXXXXXXX &#DDDD; &#xXXXX; \xXX \OOO Base64 Quoted-printable MIME + Base64 MIME + Quoted-printable 如输入:测试CSDN 结果为: 测试CSDN \...

    excel和vcf互转工具

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

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

    此“电子邮件编码解码易语言源码”提供了对两种常见的电子邮件编码方式——BASE64和Quoted-Printable的实现,支持UTF8和GBK编码格式,这对于理解电子邮件的内部工作原理和开发相关的应用非常有帮助。 首先,让我们...

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

    虽然代码片段中并没有给出具体的7bit 和 8bit 编码解码实现,但根据上下文推测,`decode_78bit` 函数很可能是用于处理这两种编码的数据。在这种情况下,解码过程通常非常简单,只需读取原始数据即可。 ### 四、总结...

    邮件解码器Decoder.zip

    《邮件解码器Decoder.zip——探索邮件编码与解码的奥秘》 在现代通信技术中,电子邮件(Email)作为一种高效、便捷的信息传递方式,扮演着至关重要的角色。然而,由于网络传输的特殊性,邮件内容往往需要进行编码...

    乱码查看器--方便的编码转换工具

    乱码察看器顾名思义就是用来察看各种乱码的工具软件,目前支持MIME/BASE64,Quoted-Printable,HZ和UUCode四种形式的编码和解码,通过一些特殊的算法,本程序还可以解开部分由于字节高位被屏蔽而形成的死乱码(使用...

    pop3接收邮件及解码

    对于Quoted-printable编码,同样需要相应的解码过程。如果邮件包含MIME类型的附件,客户端还需要解析MIME头部,识别出附件类型并进行解码。 6. "pop3主题解码成功"示例 文件名"pop3主题解码成功"可能是指一个示例...

    java对mht文件解析

    // 实现Quoted-Printable编码解码逻辑 } ``` ##### 3.4 构建DOM树 接下来,我们需要将HTML内容解析成DOM树。这里使用了`DOMFragmentParser`来完成这个任务。 ```java DOMFragmentParser parser = new ...

Global site tag (gtag.js) - Google Analytics