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

1、思想:统一字符集

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

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

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

  • 如果是整合spring的话,可以使用在配置文件中加载FreeMarkerConfigurer对象,设置默认编码格式为utf-8如下:
<bean id="freemarkerConfig"
    class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath" value="/WEB-INF/ftl/" />
    <property name="defaultEncoding" value="utf-8" />
</bean>

  • 也可以new出Configuration对象,设置默认编码格式
Configuration configuration = new Configuration(Configuration.getVersion());
configuration.setDefaultEncoding("utf-8");

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

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

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

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







  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值