全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-18 6 分钟 ✍️ juanwangdev

编码过滤器配置

CharacterEncodingFilter统一设置请求和响应编码,解决POST请求乱码问题。

XML配置

XML
<filter>
    <filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

配置参数说明

参数说明默认值
encoding编码格式UTF-8
forceEncoding强制编码false
forceRequestEncoding强制请求编码false
forceResponseEncoding强制响应编码false

forceEncoding=true时,无论请求是否已设置编码,都强制使用指定编码。

注解配置

Java
@Configuration
public class WebConfig {

    @Bean
    public FilterRegistrationBean<CharacterEncodingFilter> encodingFilter() {
        FilterRegistrationBean<CharacterEncodingFilter> registration =
            new FilterRegistrationBean<>();
        registration.setFilter(new CharacterEncodingFilter());
        registration.addUrlPatterns("/*");
        registration.addInitParameter("encoding", "UTF-8");
        registration.addInitParameter("forceEncoding", "true");
        registration.setOrder(1);  // 优先级最高
        return registration;
    }
}

SpringBoot配置

SpringBoot自动配置编码过滤器,通过application.properties设置:

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

过滤器执行顺序

编码过滤器必须放在最前面,确保其他过滤器处理时编码已正确设置:

XML
<!-- 编码过滤器 - 必须放在最前 -->
<filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 其他过滤器 -->
<filter-mapping>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

CharacterEncodingFilter只对POST请求有效,GET请求乱码需修改Tomcat配置。

要点总结

  • CharacterEncodingFilter:统一请求和响应编码
  • forceEncoding=true:强制使用指定编码
  • 过滤器必须放在最前面执行
  • SpringBoot自动配置,默认UTF-8

📝 发现内容有误?点击此处直接编辑

← 上一篇 统一编码处理
下一篇 → 静态资源映射配置
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库