You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring MVC中Thymeleaf无法正常显示希伯来文的问题求助

解决Spring MVC+Thymeleaf显示希伯来文乱码问题

针对你遇到的Thymeleaf渲染希伯来文异常、但JSP正常的问题,仅设置ThymeleafViewResolver的编码是不够的,需要从模板读取编码和响应输出编码两方面同时配置,以下是完整解决方案:

1. 确保模板文件编码正确

首先检查你的HTML模板文件是否以UTF-8编码保存(不要带BOM),大部分编辑器可以在保存时选择编码(比如IDEA、VS Code都能设置默认编码为UTF-8)。

2. 完整配置Thymeleaf编码

你需要同时配置SpringResourceTemplateResolver(模板读取编码)和ThymeleafViewResolver(响应输出编码),示例代码如下:

@Autowired
private ApplicationContext applicationContext;

@Bean
public SpringResourceTemplateResolver templateResolver() {
    SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
    templateResolver.setApplicationContext(applicationContext);
    templateResolver.setPrefix("/WEB-INF/templates/"); // 替换为你的实际模板路径
    templateResolver.setSuffix(".html");
    // 关键:设置模板文件的读取编码为UTF-8
    templateResolver.setCharacterEncoding("UTF-8");
    templateResolver.setForceEncoding(true);
    return templateResolver;
}

@Bean
public SpringTemplateEngine templateEngine() {
    SpringTemplateEngine templateEngine = new SpringTemplateEngine();
    templateEngine.setTemplateResolver(templateResolver());
    return templateEngine;
}

@Bean
public ThymeleafViewResolver viewResolver(){
    ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
    viewResolver.setTemplateEngine(templateEngine());
    // 设置响应输出编码
    viewResolver.setCharacterEncoding("UTF-8");
    // 强制响应头Content-Type带上charset=UTF-8
    viewResolver.setForceContentType(true);
    return viewResolver;
}

3. 保留HTML中的meta标签

你的HTML里已经有<meta charset="UTF-8">,请继续保留,它能帮助浏览器正确识别页面编码。

额外检查(可选)

如果以上配置后仍有问题,可确认服务器(如Tomcat)的URIEncoding设置为UTF-8,但因为你用JSP时显示正常,这一步大概率不需要调整。

内容的提问来源于stack exchange,提问作者YoavKlein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 03:47:07