最简单的解决方案,用类似下面的方法转换一下,注意异常问题
 public static String convertStr(String str){    try
   {
   String temp_p=str;
   byte[] temp_t=temp_p.getBytes("ISO8859-1");
   String temp=new String(temp_t);
   return temp;
   }
   catch(Exception e)
   {
    
   }
}

解决方案 »

  1.   

    可能信件本身的格式是用不同的编码方式存放的,比如说,有的信件是用GB2312
    有的是用big5,这样的话就比较麻烦了,需要判断不同的字符集编码方式,再用相应的转换.
      

  2.   

    public static boolean isChineseCharSet(String headstr){
            String lowercasestr=headstr.toLowerCase();
            if(lowercasestr.indexOf("charset=gb2312")>=0||lowercasestr.indexOf("charset=gbk")>=0){
                return true;
            }
            else{
                return false;
            }
        }
    ==========================================
    isChineseCharSet(body.getContentType())
      

  3.   

    public String getSubject()
                throws MessagingException
        {
            String strSubject = "",temp="";
            int pos = 0;
            String strMailSubject[] = message.getHeader("Subject");
            boolean flag = MailAccount.A;
            String  strCodingType = "";
            if(strMailSubject == null)
            {//          System.out.println("邮件头空值,返回[没有主题]");
                return subject;
            }
            else
            {//  System.out.println("原始长度 "+strMailSubject.length+" 内容  "+strMailSubject[0]);
                if(strMailSubject[0].indexOf("=?GB_2312-80?") != -1)
                    strMailSubject[0] = StringUtil.replaceStr(strMailSubject[0], "=?GB_2312-80?", "=?GBK?");
                try
                {
                    if(strMailSubject[0].indexOf("=?ISO-8859-1?") != -1)
                    {
                        System.out.println("subject after decodeText =" + strMailSubject[0]);
                        strMailSubject[0] = new String(strMailSubject[0].getBytes("ISO-8859-1"));
                    }
                    else if(strMailSubject[0].indexOf("=?gb2312?") != -1)
                    {
                        strMailSubject[0] = new String(strMailSubject[0].getBytes("gb2312"));
                    }
                    else if(strMailSubject[0].indexOf("=?GB2312?") != -1)
                    {
                        strMailSubject[0] = new String(strMailSubject[0].getBytes("gb2312"));
                    }
                    else if(strMailSubject[0].indexOf("=?GBK?") != -1)
                    {
                        strMailSubject[0] = new String(strMailSubject[0].getBytes("GBK"));
                    }
                    else if(strMailSubject[0].indexOf("=?big5?") != -1)
                        strMailSubject[0] = new String(strMailSubject[0].getBytes("big5"));
                    else
                    {//正常字符集:ISO8859_1-->gb2312;主题ISO-8859-1-->gb2312;ISO-8859-1-->GBK;
                        strMailSubject[0] = new String(strMailSubject[0].getBytes("ISO-8859-1"), "gb2312");
                    }
                    strMailSubject[0] = MimeUtility.decodeText(strMailSubject[0]);
                }
                catch(UnsupportedEncodingException unsupportedencodingexception)
                {
                    unsupportedencodingexception.printStackTrace();
                    cat.error("UnsupportedEncoding", unsupportedencodingexception);
                }        }        this.subject = strMailSubject[0];
            if(subject == null)
                subject = "";
            return subject;
        }