【问题标题】:How to configure CharacterEncodingFilter in SpringBoot?如何在 Spring Boot 中配置 CharacterEncodingFilter?
【发布时间】:2014-07-26 02:51:53
【问题描述】:

在学习Spring Boot时遇到了一些编码问题; 我想添加一个像 Spring 3.x 这样的 CharacterEncodingFilter。 就像这样:

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

【问题讨论】:

标签: encoding spring-boot


【解决方案1】:

由于 Spring Boot 1.4.2 注册您自己的 CharacterEncodingFilter 将起作用仅当您通过设置 @987654322 禁用 Spring 自己的该 bean 实例@在application.properties中。

但是,可以通过将这些设置添加到 application.properties 来解决此问题,而无需任何 Filter 实例化:

# 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

来源:Appendix A. Common application properties

【讨论】:

  • 你是对的,使用属性是更好的选择。
  • 从 spring boot 2.3 开始:spring.http。属性已移至 server.servlet.encoding.、spring.mvc。和 spring.codec。,请参阅 #18827。
【解决方案2】:

Application.java 类的示例代码,如上面的 cmets 中所建议的:

@Bean
public FilterRegistrationBean filterRegistrationBean() {
    FilterRegistrationBean registrationBean = new FilterRegistrationBean();
    CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
    characterEncodingFilter.setForceEncoding(true);
    characterEncodingFilter.setEncoding("UTF-8");
    registrationBean.setFilter(characterEncodingFilter);
    return registrationBean;
}

【讨论】:

    【解决方案3】:

    我也更喜欢application.properties 配置。但是spring.http.encoding 在新的 Spring Boot 版本 (>2.3) 中已被废弃。所以新的 application.setting 应该是这样的:

    server.servlet.encoding.charset=UTF-8
    server.servlet.encoding.enabled=true
    server.servlet.encoding.force=true
    

    【讨论】:

      【解决方案4】:

      我认为没有必要在 application.properties 文件中明确写入以下属性:

      spring.http.encoding.charset=UTF-8

      spring.http.encoding.enabled=true

      spring.http.encoding.force=true

      相反,如果您在应用程序中访问 pom.xml 并且如果您有以下内容,那么 spring 将满足您的需求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 2019-12-15
        • 2018-03-16
        • 2014-04-18
        • 1970-01-01
        • 2017-12-21
        相关资源
        最近更新 更多