关于Ajax responseText 中文乱码问题

来源:asp之家 时间:2008-02-12 16:30:00 

前一段时间碰到这样的的问题,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");

asp之家注:其实可以在传送数据前(不管中文或英文)使用escape(str)来编码处理一下,asp服务器端接收时使用unescape(str)解码,然后处理,当返回数据时在使用escape加密,客户端接收时再解密就不会出现中文乱码了。

相关文章推荐:一个用Ajax做的用户名验证程序


但是我按照在这种方法,无论如何都没有成功过。真是误人子弟啊。先把我的代码贴出来。

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, 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"); // 返回的是文本信息

PrintWriter out = response.getWriter();
// out.println("</response>");
if (rs == true)
out.write("<ReturnInfor><return>true</return><infor>用户名称不能为空</infor></ReturnInfor>");

out.close();
}

前台很简单:

<script language="javascript">
alert( "返回的信息为:"+xmlReq.responseText )
</script>

就是这样,无论如何都得不到中文。不知何故。

后来把后台的

response.setContentType("text/text;charset=UTF-8"); 

返回的是文本信息,改成 XML 传递,则运行正常。

后来发现的确如此 responseText 不支持中文。至少在我的程序里面是这样子的。希望大家可以借鉴以下。

标签:responseText,乱码,中文,ajax
0
投稿

猜你喜欢

  • Facebook是如何设计的[译]

    2009-09-17 13:10:00
  • Oracle9i的全文检索技术开发者网络Oracle

    2010-07-18 13:22:00
  • MySQL中两种快速创建空表的方式的区别

    2008-12-17 14:34:00
  • 用VB生成DLL封装ASP代码一个例子:连接access数据库等

    2008-04-07 13:06:00
  • 基于PHP做个图片防盗链

    2023-05-25 00:27:30
  • Asp无组件上传进度条解决方案

    2010-04-24 16:01:00
  • PL/SQL 日期时间类型函数及运算

    2009-02-26 10:45:00
  • Oracle存储过程之数据库中获取数据实例

    2009-03-04 10:57:00
  • 不用Global.asa也能实现统计在线人数吗?

    2009-10-29 12:28:00
  • sql之IN和BETWEEN条件运算

    2007-09-11 13:35:00
  • oracle 动态AdvStringGrid完美示例 (AdvStringGrid使用技巧/Cells)

    2009-06-19 17:21:00
  • 浅谈信息可视化

    2010-03-10 10:55:00
  • WEB页面工具语言XML支持的工具之运用

    2008-05-29 10:55:00
  • 经验总结:修改MySQL默认密码的具体步骤

    2009-01-04 13:29:00
  • MySQL的之表结构修改

    2012-01-05 19:16:17
  • asp如何做一个看他爱不爱你的小测验?

    2010-07-11 21:16:00
  • Design IT. (3),看不懂数据

    2009-02-11 10:56:00
  • 如何让新页面在新窗口打开?

    2009-04-12 19:41:00
  • 在MySQL数据库中如何来复位根用户的密码

    2008-12-03 16:57:00
  • CSS文字排版终极指南

    2010-01-19 10:30:00
  • asp之家 网络编程 m.aspxhome.com