【问题标题】:How can I enable UTF-8 support in Thymeleaf + Spring + Tomcat?如何在 Thymeleaf + Spring + Tomcat 中启用 UTF-8 支持?
【发布时间】: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


【解决方案1】:

该死的messages_pt_BR.properties 文件的编码与应用程序的其他部分不同...它决定使用 ISO-8859-1。打败我为什么!

【讨论】:

  • 我在Spring Boot 4Thymeleaf 2.1.5 有同样的问题,所有文件都用UTF-8 设置,只是messages_pt_BR.propertiesISO-8859-1 一起使用
  • 将所有内容复制到剪贴板,从文件系统中删除文件,创建一个新文件并确保所需的编码。将内容粘贴到新创建的文件中并检查拼写错误。应该没问题!
  • 谢谢@gtludwig,我这样做:stackoverflow.com/questions/31143923/…
猜你喜欢
  • 2012-01-07
  • 2016-03-28
  • 2016-01-08
  • 2015-12-28
  • 2012-02-04
  • 1970-01-01
  • 2012-02-29
  • 2012-04-27
相关资源
最近更新 更多