springboot+thymeleaf 使用FileWriter作为文件输出流造成的乱码

最近使用thymeleaf进行静态html文件的生成,本来是在网上找的demo,部署起来也挺正常的,但是后来新加一个windows服务器,导致写出来的文件乱码(项目的编码都是UTF-8,包括模板,html文件设置的都是UTF-8)

	ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
	   //模板所在目录,相对于当前classloader的classpath。
	   resolver.setPrefix("thymeleaf/");
	   //模板文件后缀
	   resolver.setSuffix(".html");
	   TemplateEngine templateEngine = new TemplateEngine();
	   templateEngine.setTemplateResolver(resolver);
	
	   //构造上下文(Model)
	   Context context = new Context();
	   context.setVariable("paperTitle",paperTitle);
	   context.setVariable("partInfos", partInfos);
	   StringBuilder fileName = new StringBuilder();
	   FileWriter write = new FileWriter(fileName.toString());

大致的关键代码是这样的,一般情况下的运行是没问题的,但是遇到了,生成的html文件部分乱码问题,在网上查到的资料说是生成文件的时候需要设置解析器编码问题,于是加了一行代码

resolver.setCharacterEncoding("UTF-8");

但是在浏览器打开发现本来是部分乱码的文件变成了全部乱码了,但是直接用编辑器打开html文件发现是没有乱码的,于是怀疑文件的编码问题,后面查看到生成的html文件是ASCII编码的,后来查到

FileWriter默认Java FileWriter 默认是用(ISO-8859-1 or US-ASCII)西方编码的
 并且无法更改编码

所以就更换了一个文件输出流,设置输出流编码为UTF-8即可,至此才发现FileWriter用起来有这么大的坑

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值