【 tulaoshi.com - Web开发 】
                             
                            前一段时间碰到这样的的问题,Ajax从后台得到的中文信息怎么都是空。后来到网上搜资料,大多是以下这样。  
  用AJAX来GET回一个页面时,RESPONSETEXT里面的中文多半会出现乱码,这是因为xmlhttp在处理返回的responseText的时候,是把resposeBody按UTF-8编码进解码考形成的,如果服务器送出的确实是UTF-8的数据流的时候汉字会正确显示,而送出了GBK编码流的时候就乱了。解决的办法就是在送出的流里面加一个HEADER,指明送出的是什么编码流,这样XMLHTTP就不会乱搞了。  
  PHP:header('Content-Type:text/html;charset=GB2312');  
  ASP:Response.Charset("GB2312")  
  JSP:response.setHeader("Charset","GB2312");  
  但是我按照在这种方法,无论如何都没有成功过。真是误人子弟啊。先把我的代码贴出来。  
  publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)  
  throwsServletException,IOException  
  ...{  
  /***//**  
  *设置请求的编码格式,因为Ajax程序默认都是通过UTF-8编码传递字符,所以在接收字符前,请设置请求的编码格式为UTF-8  
  */  
  request.setCharacterEncoding("UTF-8");  
  /***//**  
  *设置输出信息格式,因为Ajax在接收返回的信息的时候,默认的也是UTF-8编码,所以返回时,请设置编码格式为UTF-8如果你要返回的是  
  *XML信息,即Ajax调用responseXML则用下面语句代替该语句  
  *response.setContentType("text/xml;charset=UTF-8");//返回的xml文件  
  */  
  response.setContentType("text/text;charset=UTF-8");//返回的是文本信息  
  PrintWriterout=response.getWriter();  
  //out.println("/response");  
  if(rs==true)  
  out.write("ReturnInforreturntrue/returninfor用户名称不能为空/infor/ReturnInfor");  
  out.close();  
  }  
  前台很简单:  
  scriptlanguage="javascript"  
  alert("返回的信息为:"+xmlReq.responseText)  
  /script  
  就是这样,无论如何都得不到中文。不知何故。  
  后来把后台的response.setContentType("text/text;charset=UTF-8");//返回的是文本信息,改成XML传递,则运行正常。  
  后来发现的确如此responseText不支持中文。至少在我的程序里面是这样子的。希望大家可以借鉴以下。