FreeMarker无法显示汉字

时间:2014-06-19 12:05:30

标签: java freemarker

首次在JAVA项目上使用FreeMarker并在配置中文字符时使用堆栈。

我尝试了很多例子来修复下面的代码,但它仍然无法实现。

// Free-marker configuration object              
Configuration conf = new Configuration();            
conf.setTemplateLoader(new ClassTemplateLoader(getClass(), "/"));   
conf.setLocale(Locale.CHINA);
conf.setDefaultEncoding("UTF-8");

// Load template from source folder              
Template template = conf.getTemplate(templatePath);                                 
template.setEncoding("UTF-8");

// Get Free-Marker output value              
Writer output = new StringWriter();              
template.process(input, output);

// Map Email Full Content            
EmailNotification email = new EmailNotification();  
email.setSubject(subject);              
.......

看到一些示例请求对freemarker.properties进行更改,但我没有此文件。我只导入.jar文件并使用它。

请告知我该怎么做才能让它显示汉字。

2 个答案:

答案 0 :(得分:0)

究竟是什么问题?

无论如何,cfg.setDefaultEncoding("UTF-8");应该足够了,假设您的模板文件确实是UTF-8。但是,另一个必须确保正确编码的地方是将模板输出从UNICODE文本转换回“二进制”。所以FreeMarker将其输出发送到Writer,所以到目前为止所有内容都是UNICODE,但是你会有一个OutputStreamWriter或类似的东西,并且必须使用charset(可能是UTF-8)编码中文字符。

答案 1 :(得分:0)

您需要更改.ftl模板文件的文件编码,方法是在IDE或记事本中保存它们,然后在保存对话框中更改编码。 保存对话框底部应该有一个编码下拉列表。