在开发过程中,竟然被一个小小的编码问题给难住了,我尝试setHeader("Content-Type","text/plain;charset=gb2312/gbk/utf-8") 都以失败告终。代码如下:
body=new MimeBodyPart();
File file=new File(filepath);
DataSource dataSource=new FileDataSource(file);
DataHandler handler=new DataHandler(dataSource);
body.setDataHandler(handler);
body.setFileName(SendAttachMail.getChineseString(file.getName()));
multipart.addBodyPart(body);
message.setContent(multipart);
message.saveChanges();
就在body.setFilename(...)处,出现了编码问题,当我发邮件后,在附件栏上显示的文件名总是乱码。
public static String getChineseString(String str){
String tempStr="";
if(str!=null&&!str.equals("")){
try {
tempStr=new String(str.getBytes(),"ISO-8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return tempStr;
}
通过选择编码方式为ISO-8859-1一切OK,其他的编码类型如gbk,gb2312,结果为乱码(?),UTF-8的结果为空白。