ajax get提交中文参数乱码

本文讨论了使用get方式提交中文导致乱码的问题,分析了原因并提供了有效解决方案,包括在后台进行字符串转码和调整Tomcat的URIEncoding配置。同时指出对于ajax的get提交方式应特殊对待,不能像普通form提交方式那样处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     今天有个同事被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.youkuaiyun.com/getchance/article/details/7630110

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值