Spring MVC Controller中GET方式传过来的中文参数会乱码的问题

时间:2022-05-21 05:09:12

Spring MVC controllerSpring MVC Controller中GET方式传过来的中文参数会乱码的问题

这样写法通常意味着访问该请求,GET和POST请求都行,可是经常会遇到,如果碰到参数是中文的,post请求可以,get请求过来就是乱码。如果强行对参数进行了解码,get请求可以了,反而post请求会乱码了。

查阅资料

为何会乱码

Spring MVC 是基于Servlet,在Http请求到达Servlet解析之前,GET过来的URL已经被Tomcat先做了一次URLDecode。Tomcat对GET方式默认的URL解码结果是iso-8859-1而不是我认为的UTF-8(很奇怪为啥会这么干,开源项目不都是喜欢默认UTF-8的么)。

解决方案

解决方案也很简单,除了平常在项目中web.xml里配置的转码filter,jsp跟代码文件统一编码外,最关键的一点就是在Tomcat的conf目录下的server.xml中配置 Connector的URIEconding=“UTF-8"属性即可。 
官方文档中对这个属性的说明:

URIEncoding :This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL. If not specified, ISO-8859-1 will be used.