您当前的位置: 首页 > 前端教程 > JS教程 > ajax乱码解决总结

ajax乱码解决总结

作者:不详 来源:网络 发布时间: 2011-12-09 11:39 点击:
先说说Ajax乱码的来源问题,为什么会出现乱码呢?!在Web应用程序中,常用的编码方式包括GBK、GB2312、UTF-8/UTF-16/UTF-32、ISO8859_1。其中,ISO8859_1用来编码拉丁文,其由单字节(0--255)组成。GBK、GB2312用于编码简体中文,它们由单字节和双字节混合组成,最高

ajax乱码解决总结

  先说说Ajax乱码的来源问题,为什么会出现乱码呢?!在Web应用程序中,常用的编码方式包括GBK、GB2312、UTF-8/UTF-16/UTF-32、ISO8859_1。其中,ISO8859_1用来编码拉丁文,其由单字节(0--255)组成。GBK、GB2312用于编码简体中文,它们由单字节和双字节混合组成,最高位为1的字节和下一个字节构成一个汉字,最高位为0的字节是ASCII码。UTF-8/UTF-16/UTF-32是国际标准UNICODE的编码方式。用得最多的是UTF-8,主要是因为它在对拉丁文编码时节约空间,而且可以表示各个语种,容易国际化。通常,Web应用程序采用GBK或者GB2312来显示中文内容。常用的,Ajax有两种方式可以向服务器传送请求内容,一种是GET,将请求内容以“?parameterName1=value1&parameterName2=value2”字符串的形式附加在URI后面,以附加参数的形式交给XMLHttpRequest对象的open()方法传送;另外一种是POST,加功能请求内容以“parameterName1=value1&parameterName2=value2”字符串的形式传递给XMLHttpRequest对象的send()方法传送。在Ajax应用程序中,对于GET方式,与传统的通信方式一样,XMLHttpRequest对象会将请求的URI连同附带参数一起编码,所有空格、标点、重音符号以及其他非ASCII字符都用%xx编码代替,其中xx等于表示该字符的十六进制数。例如,空格返回的是"%20"。在Tomcat中,如果从http请求中获取的中文内容未经过编码(直接通过request.getParameter()方法获取),其将显示为“?????”等形式的乱码。对于POST方式,默认的XMLHttpRequest对象则采用UTF-8的编码方式传送。如果Web应用程序本来就是用的UTF-8编码的话,那么接收到的数据是正常的;如果其编码是GB2312的话,问题就来了,POST过来的数据是UTF-8,而整个Web应用程序是用GB2312来显示,那么所有的中文字符将全部变成乱码。对于Ajax应用程序来说,为保证中文内容顺利显示,可以采取如下方式统一编码。1、JSP文件统一采用GB2312或者ISO8859_1的编码方式。2、在Servlet或者JSP中获取以GET方式传送的中文内容,将其以GB2312或者ISO8859_1的方式转码再保存或者显示。3、在Servlet或者JSP中获取以POST传送的中文内容,将其以UTF-8的方式转码再保存或者显示。4、也可以让所有的JSP、Servlet、Java类都使用UTF-8的编码方式,不过这还需要调整相应的IDE设置或者Web服务器设置。
  
  这个问题不是靠写出什么教程之类的东西就能理解和解决的.
  
  最重要的是你要知道xmlhttp在底层是如何和服务端通信的,也就是它是如何读取服务端返回的内容.
  
  responseText:
  
  能解释UCS-2或者UCS-4,默认以UTF-8来解释服务端返回的字符流,不对字符流的内容做任何判断,所以你的innerHTML.xml中写的<?xmlversion="1.0"encoding="GBK"?>对这个函数没有任何意义,因为它只是文本流中的一行字符内容.
  
  responseXml:
  
  对接收回来的数据作为dom对象来解析,当然会对其中的内容如字符集,DTD,schema,等做相应解析,简单说不仅仅是"接收",而且要"处理"
  
  responseBody:
  
  任何内容以原始的二进制byte接收,(在网络层就是原始的ununsignedchar序列,java中表示为byte)不对内容做任何字符集假设.但它一次性将数据返回为一个byte[]
  
  responseStream:
  
  同上,但返回为一个流接口,要你自己从中读取byte
  
  所以如果你仅把一个名为xml的文档作为原始文本文件用responseText返回,你在文档里面任何设置属性都不会起作用.

分享到:
本文"ajax乱码解决总结"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(1)
100%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4