- 现象: freemarker生成静态页面中文乱码(固定中文和动态生成的中文都乱码)
-
检查:
1,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>
2,模版文件ftl文件已经设置头信息, 编码格式为UTF-8
<head> <meta charset="utf-8"/>
3,使用记事本查看网页不乱码;
4,使用IE浏览器切换成GB2312编码, 显示正常
-
原因: 由于前期使用maven控制台中文乱码, 在idea中设置了maven的命令-Dfile.encoding=GB2312
-
解决方案1: 删掉idea中maven的设置-Dfile.encoding=GB2312
- 解决方案2: 创建流对象时设置字符集:
Write out = new OutputStreamWriter(new FileOutputStream(new File(filePath)),"UTF-8")