如果想实现效果,以下几个位置都需要去保证成功设置
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);
,结果还是乱码,使用了上面的方式之后没有乱码了