日期:2014-05-16  浏览次数:20639 次

在Ajax中是否遇到出现中文乱码的问题??
今天遇到一个bug,使用Ajax的GET方式发送数据出现中文乱码的打印。
网上找了好多,大家总结的都有一个共同点就是;设置中文utf-8的格式问题.
在总结我的把..

前面还有window.XMLHttpRequest活的xmlhttpRequest对象

GET发送数据到Action中:
   var url = "asearch.do?method=AritcleList&key=" +Field.value;  
   http_request.open("GET", url, true); 
   http_request.onreadystatechange = callTool;   
   http_request.send(null);

发送数据再到Action中:
response.setContentType("text/xml;charset=utf-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out=response.getWriter();
out.write("<?xml version='1.0' encoding='utf-8'?>");
out.write("<myKeys>");
for (Aritcle al : lst) {
String sbr=al.getTitle();
sbr=sbr+"发天空";
System.out.println("结果:"+sbr);
out.write("<mykey>" +sbr  + "</mykey>");
}
out.write("</myKeys>");
out.flush();
这里的红色最重要了,它决定你输出到页面的格式是:utf-8还是其他格式
有人说页面格式什么要设置gbk要统一。我发现我的这个并不是页面的gbk问题
而是我在js打印出值的过程中就出现乱码了.
所以最好的解决就是:
  1、response.setContentType("text/xml;charset=utf-8");
  2、创建上面之后:PrintWriter out=response.getWriter();
  3、在页面看看吧应该就可以了..

<mykey></myykey>是自己定义的一个TagName,你也可以自己定义其他的。
这样就需要在js该标签命了.