首次在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文件并使用它。
请告知我该怎么做才能让它显示汉字。
答案 0 :(得分:0)
究竟是什么问题?
无论如何,cfg.setDefaultEncoding("UTF-8");
应该足够了,假设您的模板文件确实是UTF-8。但是,另一个必须确保正确编码的地方是将模板输出从UNICODE文本转换回“二进制”。所以FreeMarker将其输出发送到Writer
,所以到目前为止所有内容都是UNICODE,但是你会有一个OutputStreamWriter
或类似的东西,并且必须使用charset(可能是UTF-8)编码中文字符。
答案 1 :(得分:0)
您需要更改.ftl模板文件的文件编码,方法是在IDE或记事本中保存它们,然后在保存对话框中更改编码。 保存对话框底部应该有一个编码下拉列表。