去檢查你的 filter 配置,是否配置了一個最高優先級的 filter, 這個最高優先級的 filter 會影響 springboot 自動配置的 CharacterEncodingFilter。原因如下:
在tomcat里:
-
request對象的parameter並不是一開始就解析的,它是等你第一次調用
getParameter*
等獲得請求參數有關的方法的時候才解析的 -
paramter一旦被解析過一次,那就不會再次被解析
所以如果在CharacterEncodingFilter
之前有另外一個filter,而這個filter調用了getParameter*
方法,那么就有可能使用錯誤的encoding來解析,從而造成亂碼問題。
方法:修改你自己配置的 filter的優先級,至少比 CharacterEncodingFilter 的優先級低。