去检查你的 filter 配置,是否配置了一个最高优先级的 filter, 这个最高优先级的 filter 会影响 springboot 自动配置的 CharacterEncodingFilter。原因如下:
在tomcat里:
-
request对象的parameter并不是一开始就解析的,它是等你第一次调用
getParameter*
等获得请求参数有关的方法的时候才解析的 -
paramter一旦被解析过一次,那就不会再次被解析
所以如果在CharacterEncodingFilter
之前有另外一个filter,而这个filter调用了getParameter*
方法,那么就有可能使用错误的encoding来解析,从而造成乱码问题。
方法:修改你自己配置的 filter的优先级,至少比 CharacterEncodingFilter 的优先级低。