当前位置: 技术问答>java相关
请教关于JavaMail中文乱码的问题
来源: 互联网 发布时间:2015-08-19
本文导语: 我使用的是Exchange2000邮件服务器 当我收到来自SINA的邮件时,包括标题和中文附件名称的所有中文都是乱码,用MimeUtility.decodeText()方法无法解码 当我查看来自sina的邮件源文件时,发现其中文都是直接的中文文字,而...
我使用的是Exchange2000邮件服务器
当我收到来自SINA的邮件时,包括标题和中文附件名称的所有中文都是乱码,用MimeUtility.decodeText()方法无法解码
当我查看来自sina的邮件源文件时,发现其中文都是直接的中文文字,而不是诸如 "=?GBK?Q?XXXXXX?=" 之类的RFC822的安全编码
我直接用new String(sourceStr.getBytes(ENC)) [ENC = ISO-8859-1,GBK,GB2312,UTF-8]也无法获得能正确显示的中文
请高手指教!
当我收到来自SINA的邮件时,包括标题和中文附件名称的所有中文都是乱码,用MimeUtility.decodeText()方法无法解码
当我查看来自sina的邮件源文件时,发现其中文都是直接的中文文字,而不是诸如 "=?GBK?Q?XXXXXX?=" 之类的RFC822的安全编码
我直接用new String(sourceStr.getBytes(ENC)) [ENC = ISO-8859-1,GBK,GB2312,UTF-8]也无法获得能正确显示的中文
请高手指教!
|
用我下面给你的方法得到福建名,然后如下处理
就可以了
String filename= new String(getISOFileName(part).getBytes("ISO-8859-1"),"gb2312");
public static String getISOFileName(Part body){
//设置一个标志,判断文件名从Content-Disposition中获取还是从Content-Type中获取
boolean flag=true;
if(body==null){
return null;
}
String[] cdis;
try{
cdis=body.getHeader("Content-Disposition");
}
catch(Exception e){
return null;
}
if(cdis==null){
flag=false;
}
if(!flag){
try{
cdis=body.getHeader("Content-Type");
}
catch(Exception e){
return null;
}
}
if(cdis==null){
return null;
}
if(cdis[0]==null){
return null;
}
//从Content-Disposition中获取文件名
if(flag){
int pos=cdis[0].indexOf("filename=");
if(pos
就可以了
String filename= new String(getISOFileName(part).getBytes("ISO-8859-1"),"gb2312");
public static String getISOFileName(Part body){
//设置一个标志,判断文件名从Content-Disposition中获取还是从Content-Type中获取
boolean flag=true;
if(body==null){
return null;
}
String[] cdis;
try{
cdis=body.getHeader("Content-Disposition");
}
catch(Exception e){
return null;
}
if(cdis==null){
flag=false;
}
if(!flag){
try{
cdis=body.getHeader("Content-Type");
}
catch(Exception e){
return null;
}
}
if(cdis==null){
return null;
}
if(cdis[0]==null){
return null;
}
//从Content-Disposition中获取文件名
if(flag){
int pos=cdis[0].indexOf("filename=");
if(pos