与Thymeleaf的utf8 charset

当使用Spring和Thymeleaf时,我所有的西里尔字符都显示为????? 在页面上。

运用

@RequestMapping(value = "/login", method = RequestMethod.GET, produces = "text/html; charset=utf-8")

正如在此建议的那样: https : //stackoverflow.com/a/11866822/1479414 ,这里: https : //stackoverflow.com/a/12023816/1479414没有帮助。

如何解决这个问题?

答案可以在这里找到:

应该为templateResolverThymeleafViewResolver显式设置属性characterEncoding

  ...  ...   ...  ...  

为我工作。 java配置

 @Configuration @EnableWebMvc @ComponentScan(basePackages = "com.projectName.controller") public class MVCConfig implements WebMvcConfigurer, ApplicationContextAware { @Autowired private ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } @Bean public ViewResolver viewResolver(){ ThymeleafViewResolver thymeleafViewResolver = new ThymeleafViewResolver(); thymeleafViewResolver.setTemplateEngine(templateEngine()); thymeleafViewResolver.setCharacterEncoding("UTF-8"); return thymeleafViewResolver; } @Bean public TemplateEngine templateEngine(){ SpringTemplateEngine springTemplateEngine = new SpringTemplateEngine(); springTemplateEngine.setEnableSpringELCompiler(true); springTemplateEngine.setTemplateResolver(templateResolver()); return springTemplateEngine; } @Bean public ITemplateResolver templateResolver(){ SpringResourceTemplateResolver springResourceTemplateResolver = new SpringResourceTemplateResolver(); springResourceTemplateResolver.setApplicationContext(applicationContext); springResourceTemplateResolver.setPrefix("/WEB-INF/views/"); springResourceTemplateResolver.setTemplateMode(TemplateMode.HTML); springResourceTemplateResolver.setSuffix(".html"); springResourceTemplateResolver.setCharacterEncoding("UTF-8"); return springResourceTemplateResolver; } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry .addResourceHandler("/resources/**") .addResourceLocations("/resources/"); } } 

我认为在thymeleaf html页面中你正在使用th:带有html元素的文本,th:text它只显示普通文本,

如果你想在你的百里香html页面上使用特殊的章程,那么只需要改变一下

日:utext = “$ {} yourcontroller_var”

要么

个:utext = “#{properties_var}”

例如

 
Test!
// for your controller variable

 
UserName!
// for your properties variable

使用百里香html页面的特殊字符没有其他任何配置。

希望你能解决你的问题