`
java_mike
  • 浏览: 83752 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

AJAX中文乱码解决

阅读更多
   以下是我的AJAX中文乱码的解决方案:

客户端对url进行两次转码:(str可能是中文)
...
var url = 'policy.do?method=searchSuggest&word=' + str+"&now="+new Date().getTime();
url = encodeURI(url);
url = encodeURI(url);
...


服务器段对参数值进行解码:

...
String word = request.getParameter("word");
word = java.net.URLDecoder.decode(word,"UTF-8");
...
分享到:
评论
36 楼 nanjiwubing123 2012-07-04  
头像是java之父。
35 楼 nanjiwubing123 2012-07-04  
不错 ,解决了问题。
34 楼 kenee1314 2010-01-07  
可以用ESCAPE嘛!真是的
33 楼 supersun 2009-11-30  
<p>[quote=&amp;quot;java_mike&amp;quot;]   以下是我的AJAX中文乱码的解决方案:<br><br>客户端对url进行两次转码:(str可能是中文)<br><br>[code=&amp;quot;js&amp;quot;]...<br>var url = 'policy.do?method=searchSuggest&amp;amp;word=' + str+&amp;quot;&amp;amp;now=&amp;quot;+new Date().getTime();<br>url = encodeURI(url);<br>url = encodeURI(url);<br>...<br><br><br><br>服务器段对参数值进行解码:<br><br><br>[code=&amp;quot;java&amp;quot;]...<br>String word = request.getParameter(&amp;quot;word&amp;quot;);<br>word = java.net.URLDecoder.decode(word,&amp;quot;UTF-8&amp;quot;);<br>...<br><br><br><br>其实一次就够了,在Servlet或Action里<br><br>[code=&amp;quot;java&amp;quot;]String str=request.getParameter(&amp;quot;name&amp;quot;);<br><br>response.setCharacterEncoding(&amp;quot;UTF-8&amp;quot;);<br>或<br>response.setContentType(&amp;quot;text/html;charset=utf-8&amp;quot;);<br><br>response.getWriter().write(str);<br><br><br>页面Ajax部分:<br><br><br>[code=&amp;quot;js&amp;quot;]var url = '/sample.do?name=' + encodeURIComponent('中文名字'); <br>new Ajax.Request(url, {   <br>method: 'get',  <br>encoding:'UTF-8' ,<br>onSuccess: function(transport) {     <br>var notice = $('notice');   <br>if(transport.responseText!=null)  {<br>notice=transport.responseText;<br>alert(notice);<br>}<br>} <br>}); <br></p>
<p> </p>
32 楼 初出茅庐555 2009-10-10  
以前用过,可以解决Ajax乱码,有些情况好像不行。
31 楼 greenhunter 2009-09-24  
在页面encodeURI()一次,在后台URLDecoder.decode(request.getParameter(“参数名”), "utf8") 我是这样解决的
30 楼 satanest 2009-09-20  
这样来啦
1.页面的所有编码设置(包括meta 标签)都设成utf-8
2.后台加个字符编码过滤器,主要代码就是
httpServletRequest.setCharacterEncoding("UTF-8");

若要输出内容,则输出之前加
httpServletResponse.setCharacterEncoding("utf-8");


我用了好久,都没发现乱码.
29 楼 vager 2009-09-19  
使用encodeURI()两次的方式发送到服务器应用程序,那么在服务器是做了怎样的处理之后再将uri发送到服务器端的?是将uri使用ISO8859-1编码一次再发送到服务器端的吗?
28 楼 axpwx 2009-09-19  
get的时候,只要get的页面的声明正确的编码即可;
post的时候,如果接受页面是gbk的,将接受的数据转码一次即可。
27 楼 Seraph115 2009-09-08  
ExtJS中JSON数据传递乱码的解决
http://seraph115.iteye.com/blog/391665
26 楼 hbing110 2009-09-08  
习惯在马桶上思考 写道
之前在处理AJAX时我也碰到类似的问题...转了2次,但最后特殊情况问题还是不能解决.最后是用BASE64来做的,客户端与服务器分开处理....结果OK

我也同样这样做的   结果ok
25 楼 lf008 2009-09-03  
2次编码那种做法是网页编码不是utf-8时候才出现的乱码的解决方法,若网页编码是utf8就没那必要了
24 楼 Emiya_wang 2009-09-01  
之前也碰到过这个问题 也是通过转两次就OK了  
但是并不了解其中的道理
23 楼 gundumw100 2009-08-31  
java_mike 写道
   以下是我的AJAX中文乱码的解决方案:

客户端对url进行两次转码:(str可能是中文)
...
var url = 'policy.do?method=searchSuggest&word=' + str+"&now="+new Date().getTime();
url = encodeURI(url);
url = encodeURI(url);
...


服务器段对参数值进行解码:

...
String word = request.getParameter("word");
word = java.net.URLDecoder.decode(word,"UTF-8");
...

这个是我的做法啊,哈哈。
22 楼 yiminghe 2009-08-27  
<p>所有的回答都是治标不治本<br><br>好好学习下这个吧:<br><br><a href="http://yiminghe.iteye.com/blog/243812" target="_blank">深入浅出 web 编码(以前转载的)</a></p>
<p> </p>
<p> </p>
<p> </p>
<p>ps . 我的一点看法:</p>
<h3 class="type_original" title="原创"><a href="http://yiminghe.iteye.com/blog/247837">web 编码 解码 乱码</a></h3>
<p> </p>
<p> </p>
21 楼 holin 2009-08-26  
neptune 写道
var url = 'policy.do?method=searchSuggest&word=' + encodeURIComponent(str)+"&now="+new Date().getTime(); 



我一般也这么用的,lz可以试试
20 楼 piaoling 2009-08-26  
两次encodeURI操作,是把原中文彻底转换成iso8859-1编码进行传输
这样服务器,先通一次UTF8转换,再通过一次java.net.URLDecoder.decode(param2,"utf-8"); 就可以转成中文,这种方式也算是一种中文的终解决方法
19 楼 SteveGY 2009-08-26  
adaikiss 写道
peacock 写道
文件编码=数据库编码=输出编码=网页编码

正解!

只有这个是正解,其他的什么转码都是既麻烦,又不通用,现在你解决了中文,如果是日语、中文、西班牙语、英语同时需要的页面呢??utf-8, 所有的html, js, css, servlet全部统一u8,现在的ajax wrapper一般都附带一个字符编码的设置,设成u8就可以了
18 楼 adaikiss 2009-08-26  
peacock 写道
文件编码=数据库编码=输出编码=网页编码

正解!
17 楼 InnocentBoy 2009-08-26  
如果是utf-8编码,就是以get方式提交乱码的问题,在tomcat里配置一下就可以了,URIEncoding='utf-8',哪里都不用转。如果post提交本身就没问题。

相关推荐

Global site tag (gtag.js) - Google Analytics