FreeMarker中文乱码的问题。
先说下问题:
模板文件ftl编码方式是UTF-8,数据库是UTF-8,读出来数据正常,但是就是在模板里面的中文不正常,而且添加了MATA标签,
看了下代码:
Template template = cfg.getTemplate("index.ftl");
resp.setContentType("text/html; charset=" + template.getEncoding());
System.out.println("HHHHHHHHHH"+template.getEncoding());
//这里输出的总是GB18030
并且之前试图设置下面这样未果。
template.setEncoding("UTF-8");
解决办法:
cfg = new Configuration();
cfg.setServletContextForTemplateLoading(getServletContext(), "template");
cfg.setEncoding(Locale.CHINA, "UTF-8");
//此处设置,这个应该是在 cfg.getTemplate("index.ftl"); 读取模板的时候采用的编码。而template.setEncoding("UTF-8");应该是读取完了,所以
//设置也不管用。
参考自:https://www.cnblogs.com/pochonlee/archive/2010/01/08/1637818.html