编码问题

1、乱码产生过的原因  

  所有浏览器提供的AJAX对象对请求参数使用UTF-8进行编码服务器默认使用iso-8859-1去解码

  编码与解码不同就会产生乱码

2、解决方式:
  request.setCharacterEncoding("UTF-8");
  注:火狐就不用这句代码,是因为这个浏览器会在发送请求数据包中告诉服务器,它是哪种方式进行的数据编码。

3、为什么会产生乱码  

  IE浏览器提供的Ajax对象会使用GBK字符集对请求参数进行编码,而其他浏览器会使用UTF-8来编码。
  服务器默认的情况下会使用ios-8859-1进行解码
  编码方式与解码方式不一致即产生乱码

4、解决GET请求时的乱码问题  

  1).指定字符集进行编码
    比如:tomcat可以修改conf/server.xml文件中
    <Connector UREncoding="utf-8">,使用tomcat按utf-8方式解码。
  2).使用encodeURL对请求地址进行编码
    encodeURL会使用utf-8对请求地址中的中文参数进行编码
    其实问题的根本原因就是IE的与众不同。修改完成后,重启tomcat,不用IE来运行就会发现可以正常读取表单的get方式提交的中文。
    针对IE:
    var uri='xxx.do?uname='+document.getElementById('username').value;
    xhr.open('get',encodeURI(uri),true);

 5、Ajax的典型应用

  级联菜单

你可能感兴趣的:(编码)