javamail彻底解决中文乱码的方法

用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);
}
可能影响效率,但是确实管用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

启航学途

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值