您的位置:首页 > 其它

ajax get提交中文参数乱码

2012-11-22 15:34 323 查看
今天有个同事被jsp提交中文到后台被扰人的乱码问题给困扰了,大家七嘴八舌的看了半天试了各种方法也还找到原因,我也过去凑热闹看了下,同事说起先是用get方式提交,但始终是乱码,但改用post提交用过滤器过滤后就没问题了,但这里又必须用get方式来提交。

我在网上查了用get提交的方式,因为用get提交的话过滤器是不起作用的,参数是跟在url后面进行提交的,我采用了网上说得两种办法进行试验。

在后台采用new String(request.getParameter("***").getBytes("ISO-8859-1"),"UTF-8");进行转码,
在启动的tomcat的server.xml中的Connector元素配置URIEncoding="UTF-8"。

按照网上说得这两种get提交的方式居然都不成功,有点郁闷。

后台仔细查看了框架代码的提交方式,是用的ajax的http的提交方式。

http.open("GET", url, true);

http.onreadystatechange = handleSearchSuggest;

http.send(null);

然后针对这个在网上查了一圈,果然很多人都碰到类似问题,我就采用其中有人说得办法,在传递到后台的含有中文的参数上加上encodeURIComponent(value),然后在后台直接request.getParameter("value");就可以拿到中文了,并不需要再进行转换了。

至于有的人说的用两次encodeURI(encodeURI(value)),然后再java.net.URLDecoder.decode(String str,String codename)这样写因为时间所限还没试验,按网上一些博客的说法也是可行的。

小结,对于get方式提交,对于ajax的get提交方式应特殊对待,不能像普通form的get提交方式那样处理。

参考文献

http://highfly-s.iteye.com/blog/1128657
http://blog.csdn.net/getchance/article/details/7630110
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: