首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

在jquery跟servlet之间ajax的中文乱码的诡异解决方案

2012-11-25 
在jquery和servlet之间ajax的中文乱码的诡异解决方案我们项目采用的字符编码是前后台清一色的utf8,我本来

在jquery和servlet之间ajax的中文乱码的诡异解决方案

我们项目采用的字符编码是前后台清一色的utf8,我本来以为这样子就万事大吉了,不会出什么漏子的。可是谁知道ajax传过来的中文数据还是乱码。

?

原来在客户端是这样的 $.get("Discrete?q"+str,function(){......});其中str中包含了中文。

?

在服务端我们是用servlet来监听的

String qString = new String(request.getParameter("q"));,这个qString中就有乱码。

?

于是到网上找了一个超诡异的解决方案,现把解决方案公布如下:

首先在js加入辅助函数:

?

接着在填写参数的时候,在你可能会用中文的地方进行两次encodeuri

?接着在添加url参数的时候,做这样一个事情,"Subway?q=" + EncodeUtf8(str))。

? 提交到服务器后,在servlet中这样写到:

String qString = new String(request.getParameter("q"));qString = URLDecoder.decode(URLDecoder.decode(qString, "utf-8"),"utf-8");

?怎么样,很恶心吧?

?

?

?

?

?

?

后来我终于自己尝试出了一个新的更加有效的解决方案,客户端什么都不要做。只要在tomcat服务端

??? ??? qString=URLDecoder.decode(URLEncoder.encode(qString,"ISO-8859-1"),"UTF-8");就可以了。

热点排行