Java Thymeleaf Spring MVC的UTF-8编码问题
我对UTF-8字符有异议。我尝试过很多解决方案,但都不管用。我现在所拥有的:Java Thymeleaf Spring MVC的UTF-8编码问题,java,spring,utf-8,thymeleaf,tomcat9,Java,Spring,Utf 8,Thymeleaf,Tomcat9,我对UTF-8字符有异议。我尝试过很多解决方案,但都不管用。我现在所拥有的: Tomcat(server.xml): 基本配置类: 公共类HomeInitializer扩展AbstractAnnotationConfigDispatcherServletInitializer{ @凌驾 受保护类[]getRootConfigClasses(){ 返回新类[]{WebSecurityConfig.Class}; } @凌驾 受保护类[]getServletConfigClasses(){ 返
- Tomcat(server.xml):
- 基本配置类:
公共类HomeInitializer扩展AbstractAnnotationConfigDispatcherServletInitializer{ @凌驾 受保护类[]getRootConfigClasses(){ 返回新类[]{WebSecurityConfig.Class}; } @凌驾 受保护类[]getServletConfigClasses(){ 返回新类[]{WebMvcConfiguration.Class}; } @凌驾 受保护的字符串[]getServletMappings(){ 返回新字符串[]{”/“}; } @凌驾 受保护的筛选器[]getServletFilters(){ CharacterEncodingFilter=新的CharacterEncodingFilter(); filter.setEncoding(“UTF-8”);//强制使用UTF-8 filter.setForceEncoding(true); 返回新筛选器[]{Filter}; } }
- WebMvcConfiguration类,其中包含Thymeleaf配置:
@Bean public-eleafviewsolver viewsolver(){ ThymileAfViewResolver viewResolver=新的ThymileAfViewResolver(); setTemplateEngine(templateEngine()); viewResolver.setCharacterEncoding(“UTF-8”);//强制使用UTF-8 setContentType(“text/html;charset=UTF-8”); viewResolver.setOrder(1); setViewNames(新字符串[]{.html“,.xhtml”}); 返回视图解析器; } @豆子 公共SpringResourceTemplateResolver templateResolver(){ SpringResourceTemplateResolver templateResolver=新的SpringResourceTemplateResolver(); templateResolver.setCharacterEncoding(“UTF-8”);//强制使用UTF-8 templateResolver.setApplicationContext(applicationContext); templateResolver.setPrefix(“/WEB-INF/views/”); templateResolver.setSuffix(“.html”); setTemplateMode(TemplateMode.HTML); templateResolver.setCacheable(true); 返回templateResolver; } @豆子 公共SpringTemplateEngine模板引擎(){ SpringTemplateEngine templateEngine=新的SpringTemplateEngine(); setTemplateResolver(templateResolver()); setEnableSpringELCompiler(true); 返回模板引擎; } @凌驾 公共无效配置ViewResolver(ViewResolver注册表){ ThymileAfViewResolver解析器=新的ThymileAfViewResolver(); resolver.setTemplateEngine(templateEngine()); registry.viewsolver(解析器); }
- 包含其余配置的WebSecurity配置:
@覆盖 受保护的无效配置(HttpSecurity http)引发异常{ http.authorizeRequests().anyRequest().anonymous().antMatchers(“/login**”、““/*.js”、“/*.css”、“/*.svg”).permitAll().anyRequest().authorized() .antMatchers(“/login**”).permitAll()和().formLogin().loginPage(“/login”).loginProcessingUrl(“/login”).usernameParameter(“用户名”) .passwordParameter(“密码”).defaultSuccessUrl(“/”,true).permitAll()和() .logoutRequestMatcher(新的AntPathRequestMatcher(“/logout”).logoutSuccessUrl(“/login?logout”).deleteCookies(“JSSessionID”) .invalidateHttpSession(true).permitAll(); CharacterEncodingFilter=新的CharacterEncodingFilter(); filter.setEncoding(“UTF-8”);//另一个强制UTF-8 filter.setForceEncoding(true); http.addFilterBefore(filter,CsrfFilter.class); }
- 所有html页面都包含:
- 在添加Thymeleaf并使用
之前,我已经能够显示特殊字符jsp
- 还检查了所有文件(
)是否使用UTF-8编码.html
- Eclipse设置已更改,以将所有内容保留在UTF-8中
- 检查可能与此问题相关的stackoverflow上的所有答案,并验证所有排名较高的答案(包括、和)
- 已选中TelieAF消息传递解决方案()
- 转义字符
按原样显示-\u0119
\u0119
- 使用相同的Spring/Thymeleaf配置创建了新项目
我有
显示在第页上。有什么想法吗
不幸的是,我没有
web.xml
整个配置使用注释。我无法控制
过滤器
课程顺序-见
使用过的技术:Spring Framework 5.1.6、Spring Security 5.1.5、Thymeleaf 3.0.11、Thymeleaf Spring Security 4 3.0.4、Maven 4、Tomcat 9。这似乎是一种很好的补救方法,但您是否导航到目录结构,右键单击包含页面的文件夹,然后选择“刷新”
我不知道您使用的是什么IDE,但在过去我不得不手动进入Eclipse并刷新包含静态内容的包
如果你不这样做,它就不会接受这些变化 不幸的是,我不得不回答我自己的问题
要从属性文件中读取UTF-8数据,只需使用encoding属性
@组件
@PropertySource(value=“classpath:config/data.properties”,encoding=“UTF-8”)
基本上,有帮助的是向configureviewsolvers
方法添加一些额外的方法调用:
@覆盖
公共无效配置ViewResolver(ViewResolver注册表){
ThymileAfViewResolver解析器=新的ThymileAfViewResolver();
resolver.setTemplateEngine(templateEngine());
resolver.setCharacterEncoding(“UTF-8”);//我使用的是Eclipse版本:2019-03(4.11.0),刷新也没有帮助。