在学习SpringMVC的时候,从前端发送了一个post请求和一个get请求,将结果输出到控制台的时候发现,post请求获取的数据没有中文乱码,get请求获取数据的数据乱码了,web.xml文件里面已经配置了过滤器设置编码格式为utf-8。
查了资料后发现CharacterEncodingFilter只对POST请求有用,get请求由于参数都是放在地址栏中的,而浏览器会对地址栏的中文进行转码,因此产生乱码。
有以下几种解决办法:
解决办法1.开启对地址栏Uri的编码
GET请求将tomcat 目录conf/server.xml文件中的
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
改为:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>
解决办法2.配置Uri编码用UTF-8
将tomcat 目录conf/server.xml文件中的
<Connector URIEncoding="ISO-8859-1" acceptCount="1000" connectionTimeout="20000" enableLookups="false" executor="tomcatThreadPool" port="80" protocol="HTTP/1.1" redirectPort="8443" />
改为:
<Connector URIEncoding="UTF-8" acceptCount="1000" connectionTimeout="20000" enableLookups="false" executor="tomcatThreadPool" port="80" protocol="HTTP/1.1" redirectPort="8443" />
解决办法3.对地址栏的中文参数进行解码
URLDecoder.decode(request.getParameter("title"),"UTF-8");
解决办法4.对请求中的中文参数进行解码
String title = new String(request.getParameter("title").getBytes("ISO8859-1"),"UTF-8");
参考:
https://blog.csdn.net/muzi1314_/article/details/73824719
https://www.cnblogs.com/esther-qing/p/6425590.html