strSubject = new String(strSubject.getBytes("gb2312"));

解决方案 »

  1.   

    下边的方法我都用过了,都不行 ~~~~~~~~~~~~~~~~~~~~~在帮忙.  
    =?GB2312?Q?=CE=D2=D7=D4=BC=BA=B5=C4email 1?= 是好像邮件的 mime 专用编码.需要改码.
    我不知道如何改啊.     subject = new String(com.sun.mail.util.ASCIIUtility.getBytes(subject));     sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
         subject = "=?GB2312?B?"+enc.encode(subject.getBytes())+"?=";
        
         subject = MimeUtility.encodeText(subject);
            
         subject = new String(subject.getBytes("gb2312"));
      

  2.   

    to: telenths(_非法操作_) 不是字集问题.是编码,解码问题.
      

  3.   

    哦,是中文的问题strMail = new String(strMail.getBytes("ISO_8859_1"),"gb2312");OK,搞定
      

  4.   

    to: Leomonkey(#*@*#) 
    不是字集问题.是编码,解码问题.
      

  5.   

    是编码的问题
    所以需要转换编码呀类型是text/plain 则需要经过 
    subject = new String((subject.getBytes("iso-8859-1")),"gb2312");
    处理才能正确显示中文
      

  6.   

    subject = "=?GB2312?B?"+enc.encode(subject.getBytes())+"?=";
    可见是 gb2312 字符
    更具不同的 字符集 进行相应的转换这是某位前人总结的: 研究研究看
    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;
        }
      

  7.   

    msg.setHeader("Subject",value);
    System.out.println("Subject = " + msg.getSubject());
      

  8.   

    终于搞定.  总结一下.我本来就是GB2312所以不需要字集的转换.应邮件发送格式为multipart/mixed
    所以是quote格式文件.必须解码才能的到.
      

  9.   

    To:CAYU(中原)
    我也遇到了这个问题,你可不可以把你解决的方法说的具体一点?