FreeMarker 乱码解决方案 生成静态html文件

读取模板的时候有一个编码:

Template template = this.tempConfiguration.getTemplate(templatePath,"UTF-8");

生成文件的时候使用编码:

Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFile), "UTF-8"));

附(freeMarker生成静态文件的代码):

public class MakeHtml {
    private Configuration tempConfiguration = new Configuration();

    /**
     * 注意:所有位置相对于根目录
     * @param path servletPath
     * @param data
     * @param templatePath 模板路径
     * @param targetHtmlPath 保存路径
     */
    public void createHTML(String path, Map<String, Object> data,
                          String templatePath, String targetHtmlPath) {
        try {
            //filepath:ftl存放路径(/template/file/static)
            System.out.println(path);
            this.tempConfiguration.setDirectoryForTemplateLoading(new File(path+"/freeMarker"));
            //templatePath:ftl文件名称(template.ftl)
            Template template = this.tempConfiguration.getTemplate(templatePath,"UTF-8");
            // 静态页面要存放的路径
            File htmlFile = new File(path + File.separator + targetHtmlPath);
            if(!htmlFile.getParentFile().exists()) {
                htmlFile.getParentFile().mkdirs();
            }
            Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFile), "UTF-8"));
            // 处理模版 map数据 ,输出流
            template.process(data, out);
            out.flush();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void setTempConfiguration(Configuration tempConfiguration) {
        this.tempConfiguration = tempConfiguration;
    }
}
View Code
原文地址:https://www.cnblogs.com/wuyou/p/3279890.html