如何在SpringBoot中配置CharacterEncodingFilter?
我在学习Spring Boot时遇到了一些编码问题; 我想添加一个字符编码过滤器,如Spring 3.x。 就这样,如何在SpringBoot中配置CharacterEncodingFilter?,encoding,spring-boot,Encoding,Spring Boot,我在学习Spring Boot时遇到了一些编码问题; 我想添加一个字符编码过滤器,如Spring 3.x。 就这样, <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param
<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>
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true
编码滤波器
org.springframework.web.filter.CharacterEncodingFilter
编码
UTF-8
强制编码
真的
编码滤波器
/*
上面评论中建议的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;
}
由于Spring Boot 1.4.2只有在您通过在application.properties中设置
Spring.http.encoding.enabled=false来禁用Spring自己的这个bean实例时,注册您自己的CharacterEncodingFilter才会起作用
但是,可以通过将这些设置添加到application.properties中来解决此问题,而无需任何筛选器实例化:
HTTP请求和响应的字符集。如果未明确设置,则添加到“内容类型”标题。
spring.http.encoding.charset=UTF-8
#启用http编码支持。
spring.http.encoding.enabled=true
#对HTTP请求和响应强制编码到已配置的字符集。
spring.http.encoding.force=true
来源:我认为没有必要在application.properties文件中明确写入以下属性: spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true spring.http.encoding.force=true 相反,如果您在应用程序中转到pom.xml,并且有以下内容,那么spring将完成所需的工作
我也更喜欢
应用程序.属性
配置。但是spring.http.encoding
在新的spring引导版本(>2.3)中被删除。因此,新的application.setting应该如下所示:
<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>
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true
只需将其作为bean定义添加到您的配置中即可。我已尝试初始化javax.servlet.Filter,但它不起作用。可能重复,请参阅我用示例解决它。非常感谢!没错,使用属性是更好的选择。属性已移动到server.servlet.encoding.,spring.mvc。编解码器,见#18827。