zoukankan      html  css  js  c++  java
  • 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);
    }
    可能影响效率,但是确实管用。

  • 相关阅读:
    java相关
    cmd批处理命令及powershell
    火狐浏览器调试模式
    windows 配置java环境变量
    Acwing-279-自然数拆分(背包)
    Acwing-278-数字组合(背包)
    Acwing-277-饼干(DP)
    Acwing-274-移动服务(DP)
    Acwing-275-传纸条(DP)
    Acwing-121-赶牛入圈(二分, 二维前缀和,离散化)
  • 原文地址:https://www.cnblogs.com/JoePotter/p/13871633.html
Copyright © 2011-2022 走看看