解决freemarker生成的静态文件中文乱码的问题

怼烎@ 2022-05-27 23:57 520阅读 0赞

1、思想:统一字符集

查看了很多教程,说是要以GBK来获取模板,又要以utf-8输出文件,或许是有道理的,但是总感觉怪怪的,逻辑有的不是很通,我最后解决这个问题,就是一点:统一所有字符集

2、将模板文件设置为utf-8编码格式

20180326115947680

3、设置Configuration默认编码为utf-8

  • 如果是整合spring的话,可以使用在配置文件中加载FreeMarkerConfigurer对象,设置默认编码格式为utf-8如下:




  • 也可以new出Configuration对象,设置默认编码格式

    Configuration configuration = new Configuration(Configuration.getVersion());
    configuration.setDefaultEncoding(“utf-8”);

4、设置文件输出流为utf-8

我的问题就是出现在这里,没有将输出的字符集统一为utf-8,我想默认的应该时gbk,中文操作系统嘛。在就就是对于这个输出流的类型,我之前用的时new FileWriter(),好像不能设置字符集,就换了new BufferedWriter(),查看源码,发现都是Writer的子类。

  1. String path = STATIC_PAGE_PATH + itemId + ".html";
  2. Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path), "UTF-8"));
  3. template.process(root, out);

其实GBK的没试,应该也是可以的

发表评论

表情:
评论列表 (有 0 条评论,520人围观)

还没有评论,来说两句吧...

相关阅读

    相关 *.ftl文件问题

    今天终于实现了利用ext提供的表单,函数,将数据库中的内容通过Json显示在页面中,然后将页面修改之后的内容利用FromPanel的submit函数更新至数据库中。可是成功之后