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
相关产品推荐
相关产品推荐

