JAVA 中URL中文参数乱码的处理方法
来源:互联网 发布:小米5s plus 知乎 编辑:程序博客网 时间:2024/05/16 00:32
一般情况下url中文参数乱码,只要设置好页面编码格式,然后把tomcat的server.xml设置一下就好了,但是现在这个项目因为tomcat下面放的不止一个项目,改设置可能会引起其他项目的编码问题,所以不能改,为此颇纠结了一番,而网上很多方法就是用escape()、encodeURI()、encodeURIComponent()来编码,然后去后天通过硬编码new String(s.getBytes("iso-8859-1"),"gbk"); 但是很显然 硬编码是不行的,或者至少说不是通用的,换一个tomcat可能又错了。上面的编码方式只能把ISO的编码转成GBK,但是如果换一个tomcat,已经设置了UTF-8编码,那么这种编码肯定会出错。
1、ajax提交乱码
提交方式1:
$.ajax({ url:'<%=basePath%>/pages/getInfo.do', type: "POST", data:'TXTCONTENT=updateContactToServer&userInfo='+userid+"&groupId="+zd, success: function(jsonstr){ var uid = $("#hideUserId").val(); }});提交方式2:
$.ajax({ url:'<%=basePath%>/pages/getInfo.do?TXTCONTENT=updateContactToServer&userInfo='+userid+"&groupId="+zd, type: "POST", success: function(jsonstr){ var uid = $("#hideUserId").val(); }});以上两种ajax提交方法如果参数userid是中文,那么第一种提交方法不会有问题,而方法二会有问题,原因我不是很清楚,但是分析一下,应该是第二种提交方式把参数作为URL 然后再tomcat中对URL用ISO-8859-1解码,所以中文出现乱码。而第一种提交方式中参数是在表单中提交,tomcat只对URL转码,所以中文参数不会出现乱码。只是个人分析,如有错误,求高人指点!如果有人用ajax提交出现乱码了,可以试试第一种方式提交一下。
2、普通的URL请求乱码。
网上很多人给出escape()、encodeURI()、encodeURIComponent()的解决方法,具体三个方法我就不解释了,网上很多。我想说的是 只用三个方法中的一个类似这样
var url='<%=basePath%>/pages/deleteGroup.do?zdName='+encodeURIComponent(zdname)+"&groupId="+hideZD+"&count="+s; ; window.location.href=url;
是不行的,到后台依然会出现乱码,必须用两次
var url='<%=basePath%>/pages/deleteGroup.do?zdName='+encodeURIComponent(zdname)+"&groupId="+hideZD+"&count="+s; ; window.location.href=encodeURI(url);这样在后台才不会出现乱码,只不过我们在后台要用URLDecoder.decode("zdname", "UTF-8");解码一次!
原因分析:在页面用encodeURIComponent或者encodeURI转码,能转成十六进制的字符串,但是在往服务器传递过程中URL首先要经过tomcat 而tomcat会对URL解码成中文,这样tomcat再传递到后台还是会出现中文乱码,而用encodeURIComponent转码两次的话,经过tomcat转码一次,还是十六进制字符串,在传递给服务器时接收的就还是转码后的字符串,然后我们在java代码中用URLDecoder解码一次就能出现正确中文了!
同时,如果是java代码中使用httpclient的时候中的URL也可以URLEncoder和URLDecoder来转码和解码,原理一样。
结语: 关于URL乱码的问题,网上很多都是讲解encodeURIComponent 或者是通过new String(s.getBytes("iso-8859-1"),"gbk");来解决,以上两种方法是我经过多次实验后获得的,原因分析可能不对,但是确实有用。如果对你有帮助,赞一个。
- JAVA 中URL链接中文参数乱码的处理方法
- JAVA 中URL链接中文参数乱码的处理方法
- JAVA 中URL链接中文参数乱码的处理方法
- JAVA 中URL链接中文参数乱码的处理方法
- JAVA 中URL链接中文参数乱码的处理方法
- JAVA 中URL链接中文参数乱码的处理方法
- JAVA 中URL中文参数乱码的处理方法
- JAVA 中URL链接中文参数乱码的处理方法
- JAVA 中URL中文参数乱码的处理方法
- JAVA 中URL中文参数乱码的处理方法(汇总)
- JAVA 中URL链接中文参数乱码的处理方法
- JAVA 中URL链接中文参数乱码的处理方法JAVA 中URL链接中文参数乱码的处理方法
- JAVA 中URL链接中文参数乱码的处理方法JAVA 中URL链接中文参数乱码的处理方法
- JAVA中URL链接中文参数乱码处理方法
- JAVA 中URL中文参数乱码的处理方法(汇总)
- JAVA 中URL链接中文参数乱码的若干处理方法
- JAVA 中URL链接中文参数乱码的若干处理方法,现在整理收录如下:(抄录)
- JAVA 中URL中文参数乱码的处理方法(汇总)
- 对象的串行化(Serialization)
- TW2835应用,在CVBS 中,如何理解Signal timing和 和Croping
- Memcache的详细讲解
- u3d 工具错误提示
- 模板 Templates 模板函数 模板类
- JAVA 中URL中文参数乱码的处理方法
- hdu 3844 Mining Your Own Business
- Github轻松上手-常用的git命令
- iphone开发动画说明
- jQuery适用技巧
- JFrame 窗体居中
- solr学习之五--------选用合适的类型
- UIImage 图片处理:截图,缩放,设定大小,存储
- ADB server didn't ACK * failed to start daemon