如果想实现效果,以下几个位置都需要去保证成功设置
1、系统设置编码方式均为utf-8
2、web.xml中设置模板的默认编码为utf-8
<servlet>
<servlet-name>freemarker</servlet-name>
<servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
<init-param>
<!--模板路径-->
<param-name>TemplatePath</param-name>
<!--默认在webapp目录下查找对应的模板文件-->
<param-value>/</param-value>
</init-param>
<!--********模板的默认编码:UTF-8,必须设置************-->
<init-param>
<param-name>default_encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<!--********模板的默认编码:UTF-8,必须设置************-->
</servlet>
<servlet-mapping>
<servlet-name>freemarker</servlet-name>
<url-pattern>*.ftl</url-pattern>
</servlet-mapping>
3、freemaker模板中设置utf-8编码方式
<head>
<#--freemaker模板中设置编码格式,否则出现中文乱码问题,必须设置-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
4、servlet中设置模板编码方式为utf-8
configuration.setDefaultEncoding("UTF-8");
5、设置文件输出流为utf-8
Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
对于“5、设置文件输出流为utf-8”,我要简单说明一下,之前我获取文件输出流使用的代码是:FileWriter writer = new FileWriter(file);
,结果还是乱码,使用了上面的方式之后没有乱码了