How to configure CharacterEncodingFilter in SpringBoot?

后端 未结 4 1208
暗喜
暗喜 2020-12-08 07:02

I encountered some encoding problems in learning Spring Boot; I want to add a CharacterEncodingFilter like Spring 3.x. just like this:


    <         


        
相关标签:
4条回答
  • 2020-12-08 07:55

    Example code for your Application.java class, as proposed in the comments above:

    @Bean
    public FilterRegistrationBean filterRegistrationBean() {
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setForceEncoding(true);
        characterEncodingFilter.setEncoding("UTF-8");
        registrationBean.setFilter(characterEncodingFilter);
        return registrationBean;
    }
    
    0 讨论(0)
  • 2020-12-08 07:59

    I also prefer application.properties configuration. But spring.http.encoding is depracted in the new spring boot versions (>2.3). So new application.setting should look like this:

    server.servlet.encoding.charset=UTF-8
    server.servlet.encoding.enabled=true
    server.servlet.encoding.force=true
    
    0 讨论(0)
  • 2020-12-08 08:02

    I think there is no need to explicity write the following properties in application.properties file:

    spring.http.encoding.charset=UTF-8

    spring.http.encoding.enabled=true

    spring.http.encoding.force=true

    Instead if you go to pom.xml in your application and if you have the following, then spring will do the needful.

    0 讨论(0)
  • 2020-12-08 08:04

    Since Spring Boot 1.4.2 registering your own CharacterEncodingFilter will work ONLY IF you disable Spring's own instance of this bean by setting spring.http.encoding.enabled=false in the application.properties.

    However, one can resolve this matter without any Filter instantiation by adding these setting to the application.properties:

    # Charset of HTTP requests and responses. Added to the "Content-Type" header if not set explicitly.
    spring.http.encoding.charset=UTF-8
    # Enable http encoding support.
    spring.http.encoding.enabled=true
    # Force the encoding to the configured charset on HTTP requests and responses.
    spring.http.encoding.force=true
    

    Source: Appendix A. Common application properties

    0 讨论(0)
提交回复
热议问题