【发布时间】:2016-08-29 22:03:27
【问题描述】:
我的应用程序的 Thymeleaf 配置设置为:
@Bean
public ServletContextTemplateResolver templateResolver() {
ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();
templateResolver.setCacheable(false);
templateResolver.setTemplateMode("HTML5");
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setPrefix(HTML_VIEWS);
templateResolver.setSuffix(".html");
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addDialect(new SpringSecurityDialect());
templateEngine.addDialect(new LayoutDialect(new GroupingStrategy()));
templateEngine.setTemplateResolver(templateResolver());
return templateEngine;
}
@Bean
public ViewResolver viewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
viewResolver.setCharacterEncoding("UTF-8");
viewResolver.setCache(false);
viewResolver.setOrder(1);
return viewResolver;
}
OS (CentOS 7) 默认编码为 UTF-8,所有生成的文件都采用 UTF-8 编码。仍然我似乎无法正确显示字符。我尝试了一堆在这里找到的建议,但无济于事。
根据这里的一些建议,我还尝试在我的 Spring Security 配置中在 CsrfFilter 之前设置一个 CharacterEncodingFilter。此外,该应用程序正在保存数据WITH 奇怪的字符。
我的安全配置开始于:
@Override
protected void configure(HttpSecurity http) throws Exception {
CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
encodingFilter.setEncoding("UTF-8");
encodingFilter.setForceEncoding(true);
http.addFilterBefore(encodingFilter,CsrfFilter.class);
// more security configs
}
我错过了什么?
【问题讨论】:
-
你的模板中有
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />吗? -
在我所有模板的
<head>部分中,我有<meta charset="UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />。
标签: java spring tomcat utf-8 thymeleaf