不能用日文字符编码主题

时间:2012-02-13 08:59:49

标签: java utf-8 character-encoding javamail mime

我有一个带有主题的jsp表单,内容字段接受来自用户的输入。该程序发送邮件。这两个字段都设置为String对象。发送邮件后,日文或中文字符将成为垃圾字符。如果作为“英语”主题,它工作正常。

这是我的代码

// create a message
    MimeMessage msg = new MimeMessage(session);
if(subject != null)

        msg.setSubject(subject, "UTF-8");
        //msg.setSubject(subject);//commented to take care of email

    // create the Multipart and add its parts to it
    //MimeMultipart mp = new MimeMultipart();
    MimeMultipart mp = new MimeMultipart("alternative");

    if(body != null)
    {
        // create and fill the first message part

        MimeBodyPart mbp1 = new MimeBodyPart();
        mbp1.setText(body);
        mbp1.setHeader("Content-Type","text/html;charset=utf-8");
        mbp1.setHeader("Content-Transfer-Encoding", "quoted-printable");
        //mbp1.setContent(body, "text/html");
        mp.addBodyPart(mbp1);
    }

我在主题字段中给了主题漢字 test message并发送邮件。我正在收集日文字符的垃圾字符。所以我收到的邮件主题为?? test message

但是当我收到邮件时,仍会在主题中收到一些垃圾字符。

1 个答案:

答案 0 :(得分:1)

主题字符串是如何创建的?在发送表单数据时是否考虑了用户浏览器使用的字符编码?您是否验证该字符串包含正确的Unicode字符数据?