javamail彻底解决中文乱码的方法
2011-04-07 15:44
399 查看
用javamail以来,一直被中文乱码困扰,虽然90%的邮件都正常,但是剩下10%的乱码确实让人心里疙疙瘩瘩。
通过代码subject = MimeUtility.decodeText(mimeMessage.getSubject());subject = MimeUtility.decodeText(subject);
获取的subject大部分都是正确的,但偶尔出现乱码,网上给出解决办法,
subject = new String(subject.getBytes("ISO8859_1"), "GBK"),的确解决了乱码问题,但是以前正确的就变成了乱码。能不能只把乱码的进行转换,要想转换的话就必须知道是不是乱码,只有是乱码的情况下我们需要尝试用GBK转换。
那么如何知道是否有乱码呢?要是能知道subject的字符集就好了,但是这条路是行不通的,至少并不是完美的解决办法。
那么如何呢?
我以为只要有中文就可能存在乱码,那么如果subject中没有中文,就可以怀疑他是乱码,我们就尝试进行GBK转换
String regEx = "[\\u4e00-\\u9fa5]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(subject);
if(!m.find()){
subject = new String(subject.getBytes("ISO8859_1"), "GBK");
subject = MimeUtility.decodeText(subject);
}
可能影响效率,但是确实管用。
通过代码subject = MimeUtility.decodeText(mimeMessage.getSubject());subject = MimeUtility.decodeText(subject);
获取的subject大部分都是正确的,但偶尔出现乱码,网上给出解决办法,
subject = new String(subject.getBytes("ISO8859_1"), "GBK"),的确解决了乱码问题,但是以前正确的就变成了乱码。能不能只把乱码的进行转换,要想转换的话就必须知道是不是乱码,只有是乱码的情况下我们需要尝试用GBK转换。
那么如何知道是否有乱码呢?要是能知道subject的字符集就好了,但是这条路是行不通的,至少并不是完美的解决办法。
那么如何呢?
我以为只要有中文就可能存在乱码,那么如果subject中没有中文,就可以怀疑他是乱码,我们就尝试进行GBK转换
String regEx = "[\\u4e00-\\u9fa5]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(subject);
if(!m.find()){
subject = new String(subject.getBytes("ISO8859_1"), "GBK");
subject = MimeUtility.decodeText(subject);
}
可能影响效率,但是确实管用。
相关文章推荐
- u盘挂载中文乱码一种不彻底方法,xubuntu如何搜索可能解决方法
- JavaMail发送中文邮件中主题乱码的解决方法
- 转 JavaMail发送中文邮件中主题乱码的解决方法
- JavaMail发送中文邮件中主题乱码的解决方法
- JavaMail发送中文邮件中主题乱码的解决方法
- 彻底解决Moodle上传文件中文文件名乱码解决方法
- FastReport 4.9.20 中文菜单显示不全或者乱码解决方法
- 探讨PHP JSON中文乱码的解决方法详解
- [转]Source Insight中文注释乱码、字体大小、等宽解决方法
- 【解决方法】Ubuntu文本编辑器gedit打开中文出现乱码的
- 对于从IE传送中文到服务层出现乱码的解决方法
- Linux下MySQL 5.5/tomact6/Centos 的修改字符集编码为UTF8(彻底解决中文乱码问题)
- Java中各类中文乱码问题解决方法总汇
- flash builder控制台显示中文乱码问题解决方法
- 网络通信的中文乱码问题及解决方法
- GET方法URL中传递中文参数乱码的解决方法
- Qt Creator编写C++中文乱码解决方法
- Source Insight 4.0中文乱码的解决方法
- Javamail中的常见中文乱码问题与解决办法(综合)
- 解决ubuntu中文乱码问题的方法总结