Freemarker - 英镑符号显示不正确

时间:2012-05-21 14:58:49

标签: freemarker

我正在开发一个包含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 - 是英镑符号的十六进制代码,但是它的打印?同样。

我无法发现错误

1 个答案:

答案 0 :(得分:0)

FreeMarker随处可见UNICODE,因此它不会生成? - s本身。打印String而不是String本身的字符代码,并查看它是否已包含0x3F(UCS代码为?)。如果没有,则System.out.println使用错误的编码,编码电子邮件的任何内容也是如此。如果它确实包含0x3F,那么可能有些东西搞乱了(再次,你可以通过打印字符代码检查来自JDBC的字符串),因此FreeMarker已经收到?