Freemarker是一種靈活的java模板引擎,爲文件靜態化,生成有規則文件提供了很大的便捷。 java
在昨天,將開發的系統部署到linux下,出現了生成的目標文件中出現了亂碼問題(windows下正常)。 linux
我已經完成的配置(模仿SpringMVC下FreemarkerView的配置),配置好了configuration.setDefaultEncoding,在獲取Template的時候,經過getTemplate(tpl, local, encoding)方法。 windows
問題分析: 服務器
是因爲我Writer的問題,由於FileWriter默認採用系統默認的字符編碼,而當時的服務器linux系統編碼爲gbk,致使了生成到目標文件的編碼發生了變化。 編碼
解決辦法: spa
經過OutputStream解決。OutputStream能夠調整輸出流的編碼格式。 模板引擎
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(tfile), "utf-8"); utf-8