Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Thymeleaf Spring MVC的UTF-8编码问题_Java_Spring_Utf 8_Thymeleaf_Tomcat9 - Fatal编程技术网

Java Thymeleaf Spring MVC的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(){ 返

我对UTF-8字符有异议。我尝试过很多解决方案,但都不管用。我现在所拥有的:

  • 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
    之前,我已经能够显示特殊字符

  • 还检查了所有文件(
    .html
    )是否使用UTF-8编码
  • 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),刷新也没有帮助。