我正在尝试部署一个在 1.3.7 中创建的应用程序,该应用程序从桌面应用程序接收通知,并且根据用户的语言,将发送特定语言的“谢谢”电子邮件。电子邮件是使用 javamail MimeMessageHelper 从模板创建的,如下所示:
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom(new InternetAddress(config.td.mail.from.email,config.td.mail.from.text))
helper.setTo((mailDetails.to) as String)
helper.setSubject(config.td.mail.from.regSubject)
helper.setText(buildRegBody(mailTemplate, mailDetails), true)
实际的 mailTemplate 文件都以 UTF-8 编码。在本地运行应用程序时,发送的电子邮件没有任何错误,但在部署到 Tomcat 时,电子邮件文本中的任何国际字符都将替换为:������。在使用正确的 UTF-8 排序规则将国际字符写入 MySQL 数据库时,我遇到了类似的问题。
我的配置文件包括以下行:
grails.views.default.codec = "none"
grails.views.gsp.encoding = "UTF-8"
grails.converters.encoding = "UTF-8"
我尝试了以下方法无济于事:
- 向 Tomcat 服务器 xml 中的连接器元素添加了 UTF-8 编码语句
- 确保 charEncodingFilter 在 web.xml 的链中排在第一位
- 使用参数创建了我的生产战争:'-Dfile.encoding=UTF-8 war'
这些似乎解决了大多数其他用户的问题,现在我已经没有想法了 - 任何帮助或建议将不胜感激。