简体   繁体   English

如何在 SpringBoot 中配置 CharacterEncodingFilter?

[英]How to configure CharacterEncodingFilter in SpringBoot?

I encountered some encoding problems in learning Spring Boot;学习Spring Boot时遇到了一些编码问题; I want to add a CharacterEncodingFilter like Spring 3.x.我想添加一个 CharacterEncodingFilter 像 Spring 3.x。 just like this:像这样:

<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>

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 .由于Spring Boot 1.4.2注册您自己的CharacterEncodingFilter当您通过在application.properties 中设置spring.http.encoding.enabled=false禁用 Spring 自己的此 bean 实例spring.http.encoding.enabled=false

However, one can resolve this matter without any Filter instantiation by adding these setting to the 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

Source: Appendix A. Common application properties来源: 附录 A. 常见应用程序属性

Example code for your Application.java class, as proposed in the comments above: Application.java 类的示例代码,如上面评论中所建议的:

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

I also prefer application.properties configuration.我也更喜欢application.properties配置。 But spring.http.encoding is depracted in the new spring boot versions (>2.3).但是spring.http.encoding在新的 spring boot 版本(> 2.3)中被废弃了。 So new application.setting should look like this:所以新的 application.setting 应该是这样的:

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

I think there is no need to explicity write the following properties in application.properties file:我认为没有必要在 application.properties 文件中明确写入以下属性:

spring.http.encoding.charset=UTF-8 spring.http.encoding.charset=UTF-8

spring.http.encoding.enabled=true spring.http.encoding.enabled=true

spring.http.encoding.force=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.相反,如果您在应用程序中访问 pom.xml 并且具有以下内容,那么 spring 将完成所需的工作。

财产

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在Maven中配置编码? - How to configure encoding in Maven? 如何为某个Web应用程序配置URIEncoding? - How to configure URIEncoding for a certain web application? 如何在Mysql中配置用户注释? - How should I configure user comments in Mysql? Postgres.pgadmin。 如何配置编码? - Postgres.pgadmin. How to configure encoding? 如何在Ubuntu和Windows上为德语Umlaute配置git编码? - How to configure git encoding for German Umlaute on Ubuntu and Windows? 在SpringBoot中使用StandardPasswordEncoder - Using StandardPasswordEncoder in SpringBoot 如何使用Glassfish服务器配置内容类型和内容编码? - How to configure content type and content encoding using glassfish server? 我们如何配置SORM以支持utf-8? - How can we configure SORM to support utf-8? 如何配置mysql版本&#39;5.1.49-1ubuntu8&#39;以显示多字节字符? - How to configure mysql version '5.1.49-1ubuntu8' to show multibyte charecters? weblogic中的分块传输编码问题。 我不知道如何配置weblogic以获得不分块的jsp图像 - Chunked transfer encoding problems in weblogic. I do not know how to configure weblogic in order to get an jsp image not chunked
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM