springmvc请求参数中文乱码问题源码分析

Spring 对于请求参
数中的中文乱码问题,给出了专门的字符集过滤器: spring-web-4.2.1.RELEASE.jar 的
org.springframework.web.filter 包下的CharacterEncodingFilter 类。

springmvc请求参数中文乱码问题源码分析

解决方案:
在web.xml 中注册字符集过滤器,即可解决Spring 的请求参数的中文乱码问题。不过,
最好将该过滤器注册在其它过滤器之前。因为过滤器的执行是按照其注册顺序进行的。
springmvc请求参数中文乱码问题源码分析

源码分析:
打开CharacterEncodingFilter 类的源码,发现有两个set 属性:encoding 与forceEncodin。

encoding:String 类型,指定字符集
forceEncoding:boolean 类型,指定是否强制使用指定的字符集。若为true,则代码中
指定的字符集将不起作用。若为false,则代码中若指定了字符集,就使用代码指定字
符集;若代码中没有指定字符集,则使用这里指定的字符集。
springmvc请求参数中文乱码问题源码分析
以上源码的意思是,若使用encoding 指定了字符集,则一定使用该字符集的条件有两
个:要么forceEncoding 为true,要么代码中没有指定字符集。