Freemarker中的编码问题
?
Configuration cfg = new Configuration();cfg.setDefaultEncoding("UTF-8");ClassTemplateLoader ctl = new ClassTemplateLoader(getClass(), templatePath);cfg.setTemplateLoader(ctl);Template template = cfg.getTemplate(htmlTemplateName);template.setEncoding("UTF-8");Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath),"UTF-8"));?
?
问题在于本地字符集,中文环境本地字符集为GBK,英文环境默认字符集为ISO-8859-1。开始使用的是FileWriter,而FileWriter是不能设置字符集的,所以只能是默认的GBK编码,就乱码了。
使用OutputStreamWriter,参数为UTF-8,就可以了