Jsp页面中地址栏参数传入中文的乱码问题

最近写一些东西,使用超链接在地址栏里传入中文后,遇见了一些乱码问题,查了一些资料,做一些总结。

一、Get提交方式产生的乱码

原因:浏览器首先会将这些中文字符进行编码然后再发送给服务器,地址栏中所输入的URL包含中文字符时,浏览器会将它们转 换为 application/x-www-form-urlencoded MIME 字符串,即一堆%xx%xx的字符串。

解决方法

 ①js或超链接等向地址栏中传入中文时,使用如下方式,将你需要传入的参数封装一下

 //把hh换成你要转换的字符串对象,编码类型填你需要转换的类型,需要和后面解码时候的编码类型一致
<% URLEncoder.encode(hh,"utf-8") %>

   后台解码

//此处注意解码时候和编码时候设定的字符集保持一致
String hh = request.getParameter("hh");
hh = URLDecoder.decode(hh,"utf-8");

 ②修改tomcat的server.xml中的配置(最推荐的做法)

    找到tomcat的安装目录---conf---server.xml

    找到如下两个Connector标签

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" />
。。。
。。。
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    将之改为如下,即在后面加上指定的编码

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
    。。。。
    。。。。
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>

③使用高版本的Tomcat,解决了Get请求的中文乱码问题,亲测Tomcat7.xxx的没有解决,应该8之后有这个优化。

扫描二维码关注公众号,回复: 4608628 查看本文章

二、Post提交方式的中文乱码

       这种乱码解决方式很常见,就不多说了,直接一行代码,解决方式如下,推荐在后端代码的首行就加上,算是一个好习惯。

//在接收前台传入的参数之前,加入下面一行代码指定字符编码
request.setCharacterEncoding("utf-8");

猜你喜欢

转载自blog.csdn.net/qq_37922457/article/details/83960881