if ((temp = part.getFileName()) != null)
{
String filename="";
filename = new String(MimeUtility.decodeText(part.getFileName()).getBytes("ISO8859_1"),"GBK");
//上面已经转码,可是在下面:
public void savePart(Part part,String Filename)
{
try
{
Filename =new String(Filename.getBytes("ISO8859_1"),"GBK");
//这个地方又进行了一次转码,这样做可以吗?
我在http://community.csdn.net/Expert/topic/3284/3284891.xml?temp=.6648981中直接用的是 String filename = MimeUtility.decodeText(part.getFileName()),可能是没有考虑到中文的情况,不过你也可以直接试试
http://community.csdn.net/Expert/topic/2975/2975230.xml?temp=.8000757
中回复人: cn086(清凉小雅) ( ) 信誉:100 的回答我是按照他所写的
对了,顺便问你一下,可不可以在JAVA中自己建立一个文件名称,比如AA.CCD文件,我在里面存储信息,只有经过我的程序才能进行访问编辑,其他的任何方式不能打开,我记得VC,DELPHI可以实现。JAVA应该是可以实现的,有没有这方面的资料?(网站资料也可)目的是为了保密的需要!你是大虾!请给予指导
不过应该和处理附件名是一样的吧
取到名字后转换:
你把邮件在outlook里存为 .eml
用文本打开会有:
------=_NextPart_001_0006_01C483B3.B8EF1F40--------=_NextPart_000_0005_01C483B3.B8EF1F40
Content-Type: application/x-msdownload;
name="=?iso-2022-jp?B?LRskQlJLGyhCLRskQmYmGyhCLRskQlpAMjs0eTFRSjhIRxsoQi5bVg==?=
=?iso-2022-jp?B?ZXJ5Q0QuY29tXS5leGU=?="
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="=?iso-2022-jp?B?LRskQlJLGyhCLRskQmYmGyhCLRskQlpAMjs0eTFRSjhIRxsoQi5bVg==?=
=?iso-2022-jp?B?ZXJ5Q0QuY29tXS5leGU=?="
看一下用这些描述的encode解码对不对.
推荐第一种方法,那样别人就算读用文本编辑器看也很难解得出来
而Content-Transfer-Encoding: base64这个表示用base64编码,所以你应该先用base64解码,再用iso-2022-jp解码,
new sun.misc.BASE64Decoder().decodeBuffer()这个用于base64解码
string.getBytes("iso-2022-jp")这个用于iso-2022-jp解码