ajax get提交中文参数乱码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pengchang_1981/article/details/8212463

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

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

  1.     在后台采用new String(request.getParameter("***").getBytes("ISO-8859-1"),"UTF-8");进行转码,
  2.     在启动的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

猜你喜欢

转载自blog.csdn.net/pengchang_1981/article/details/8212463