2

我与奇怪的错误作斗争。我对邮件主题和正文使用单独的 freemarker 模板。它使用 org.springframework.mail.javamail.JavaMailSender 发送。只有包含一些特殊瑞典语字符的模板才能在我的应用程序中使用(是的,您没看错……不是相反)。如果我删除它,我的电子邮件内容就会崩溃。那么它包含:

MIME-Version: 1.0
Content-Type: text/html;charset=UTF-8
Content-Transfer-Encoding: 7bit

..
html code here
..

我的 freemarker.properties 文件

locale=sv_SE
classic_compatible=false

number_format=
date_format=yyyy-MM-dd
time_format=HH:mm
datetime_format=yyyy-MM-dd HH:mm
output_encoding=UTF-8

url_escaping_charset=UTF-8

auto_import=spring.ftl as spring
auto_include=
default_encoding=UTF-8
localized_lookup=true
strict_syntax=true
whitespace_stripping=true
template_update_delay=10

我尝试使用 dos2unix 工具转换主题文件。使用“find -bi subject.ftl”显示编码是 us-ascii。添加了特殊字符 - utf-8。

这件事对我来说很奇怪......

//解决方案::set bomb在vim中使用和保存文件。

4

1 回答 1

1

根据@freakman 的要求,我发表了我的评论作为答案——事实证明它解决了这个问题:

将BOM(字节顺序标记)附加到模板文件的开头,以确保它始终被解析为 UTF-8 模板。

作为参考,UTF-8 的 BOM 为:

  • 十六进制: EF BB BF
  • ISO-8859-1 编码
  • 爪哇:byte[] bom = { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF};
于 2012-11-12T10:58:42.663 回答