我正在开发一个包含Hibernate,JPA,Spring的应用程序。
我有一个使用Freemarker在流程结束时发送电子邮件的流程。
免费标记模板中的数据从数据库中填充。数据在数据库中有一个英镑的符号,但是当freemarker处理它时,它被包含在内?符号
代码如下
final StringWriter writer = new StringWriter();
Template template= freemarkerConfiguration.getTemplate("sampleReport.ftl");
template.process(this, writer);
System.out.println(writer.toString());
打印从数据库中检索的数据,结果如下
INFO 05-22 10:08:18 Printing ?-- Hex :a3
a3 - 是英镑符号的十六进制代码,但是它的打印?同样。
我无法发现错误
答案 0 :(得分:0)
FreeMarker随处可见UNICODE,因此它不会生成?
- s本身。打印String
而不是String
本身的字符代码,并查看它是否已包含0x3F(UCS代码为?
)。如果没有,则System.out.println
使用错误的编码,编码电子邮件的任何内容也是如此。如果它确实包含0x3F,那么可能有些东西搞乱了(再次,你可以通过打印字符代码检查来自JDBC的字符串),因此FreeMarker已经收到?
。