阿拉伯语显示为?????在速度模板中

时间:2010-12-02 11:59:28

标签: spring spring-mvc java-ee velocity

祝福所有人 我正在使用速度模板发送电子邮件 在模板中我有一些阿拉伯语文本

发送电子邮件时,文字显示为?????????? 我不知道为什么:

在此处发送电子邮件之前,

编码设置为utf-8:

VelocityEngineUtils.mergeTemplateIntoString(velocityEngine,templateName, "UTF-8",newModel);

我试图在vm中添加charset,但没有运气:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

为什么会出现这种问题?

2 个答案:

答案 0 :(得分:7)

我能够在Spring应用程序发送的纯文本电子邮件中生成阿拉伯语文本(تجاوزسعةمكدس)。在GMail和Thunderbird上正确显示的文字。这是我的邮件发送逻辑:

public void send(String fromAddress, String fromName,
    String toAddress, String subject,
    String template, Map<String, Object> model) {
  MimeMessagePreparator preparator = new MimeMessagePreparator() {
    public void prepare(MimeMessage mimeMessage) throws Exception {
      MimeMessageHelper message = new MimeMessageHelper(
          mimeMessage, "UTF-8");
      message.setTo(toAddress);
      message.setFrom(new InternetAddress(fromAddress, fromName));
      message.setSubject(subject);
      message.setText(VelocityEngineUtils
          .mergeTemplateIntoString(velocityEngine, template, "UTF-8", 
              model));
    }
  };
  mailSender.send(preparator);
}

答案 1 :(得分:1)

您是否设置了velocity.properties? (特别是input.encoding或output.encoding)如果没有,请尝试将它们都设置为UTF-8。