[英]Freemarker encoding wrong
I have project it's jetty server which use freemarker. 我有项目是使用freemarker的码头服务器。 I use russian letters in my templates and receive
?
我在模板中使用俄语字母并收到
?
. 。 All subjects i have read before didn't help me.
我之前阅读过的所有主题都对我没有帮助。 I use in my code
我在我的代码中使用
.setContentType("text/html;charset=utf-8");
.setCharacterEncoding("UTF-8");
all my files is utf-8. 我所有的文件都是utf-8。
My Freemarker page genertor servlet 我的Freemarker页面生成器servlet
public class PageGenerator {
private static PageGenerator pageGenerator;
private Configuration cfg;
public static PageGenerator instance() {
if (pageGenerator == null)
pageGenerator = new PageGenerator();
return pageGenerator;
}
public String getPage(String filename, Map<String, Object> data) {
Writer stream = new StringWriter();
try {
Template template = cfg.getTemplate(filename);
template.process(data, stream);
} catch (IOException | TemplateException e) {
e.printStackTrace();
}
return stream.toString();
}
private PageGenerator() {
cfg = setCfg();
}
private Configuration setCfg(){
cfg = new Configuration(Configuration.VERSION_2_3_20);
try {
cfg.setDirectoryForTemplateLoading(new File("templates/"));
cfg.setDefaultEncoding("UTF-8");
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
} catch (IOException e) {
e.printStackTrace();
}
return cfg;
}
}
But in brouser my page in windows-1252 encoding. 但是在brouser中,我的页面以Windows-1252编码。
感谢您的想法ddekany
我使用了ddekany
模式,发现扩展HttpServletResponse的Class Response具有“魔术”方法.setCharacterEncoding()
,该方法在响应流中设置了字符编码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.