tomcat7中get请求中文乱码问题

昨天发现放在 服务器上的后台管理系统 项目,对列表进行搜索时搜索不到,查看tomcat日志发现传递到后台的参数是乱码,因此sql语句搜索不到指定的数据,于是开始了修改 乱码的问题。

首先查看服务器的编码格式通过命令locale打印出
在这里插入图片描述
没问题是正常 的utf-8,然后查看数据库编码,但是想着数据库中存储的数据都是中文,数据库没有出现乱码应该不是数据库的问题。然后开始看项目问题,项目前端jsp页面头部也添加了utf-8,因此不是前端的问题。

再去看请求方式的问题,经过测试,接口通过post请求不会出现乱码,后台接收到的都是正常的中文,于是看 页面的请求方式,问题找到了,页面请求后台的方式是get,于是测试了所有的页面都是get请求,都会 出现乱码的问题,因此问题就出在了get请求乱码的问题。
对于get请求的理解,我只知道参数会添加在url进行传输, 并且会对传输的中文进行编码,相应的那我后台获得参数的时候应该也要解码,然后才能得到相应的中文,于是百度看解决方法,方法如下:

1、修改tomcat中的server.xml文件

修改

<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443"  />

<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8" />

然后重启tomcat,运行项目,搜索 ,结果依然乱码(。。。。。。。。。。。)

(此方法对我无用)

2、手动解码

对前端编码的参数 进行节码,解码代码如下

if(user.getName()!=null){
	String str = new String(user.getName().getBytes("iso8859-1"),"UTF-8");
	user.setName(str);
}

重新打包项目上传,启动tomcat,运行测试,乱码(。。。。。。。。。。。。。。。。。。。)
(内心一万只why飞奔而过)

想不通到底哪里出问题,前端输入中文,前端通过utf-8格式编码,然后通过tomcat服务器(默认iso-8895-1格式)编码,到后台我先iso-8895-1解码,再utf-8解码,为什么还得不到中文???

最后只能使用终极大招,重新安装tomcat,安装tomcat8,一通配置,打包运行,完美!!!

记录一次不知道什么原因的get请求乱码问题。希望哪个大佬能解答一下疑惑,万分感谢!!

发布了55 篇原创文章 · 获赞 6 · 访问量 3992

猜你喜欢

转载自blog.csdn.net/qq_40126996/article/details/103614009