我在学习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>
答案 0 :(得分:48)
由于 Spring Boot 1.4.2 注册您自己的 CharacterEncodingFilter 将仅限您通过设置{{}来禁用Spring自己的bean实例1}}在 application.properties 。
中但是,通过将这些设置添加到 application.properties ,可以在没有任何过滤器实例化的情况下解决此问题:
spring.http.encoding.enabled=false
答案 1 :(得分:12)
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;
}
答案 2 :(得分:2)
我也更喜欢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
答案 3 :(得分:-4)