ajax碰到过两问题,一个是时间问题,一个是中文乱码问题。
因为项目都是在谷歌浏览器做的。
所以一直没有发现别的浏览器问题,
测试的时候才发现ie,360 等出现点击ajax所在的方法失效
刚开始一直以为是js不兼容。
调试下发现是前台传值发现乱码,
坑。。
然后 把中文先转码
最后后台再解码
就可以了。。
下面是决解方法
前台
url: "/yq1012/Ajax.php?name="+encodeURI(encodeURI(name))
后台
name= java.net.URLDecoder.decode(name,"UTF-8");
补充:
1.UrlEncode:将字符串以URL编码,所有的中文参数都会在传输过程中转化为url编码
2.iso-8859-1:是JAVA网络传输使用的标准 字符集 tomcat默认接收的编码级.
3.pageEncoding="UTF-8"的作用是设置JSP编译成Servlet时使用的编码。
4.contentType="text/html;charset=UTF-8"的作用是指定对服务器响应进行重新编码的编码。
5.页面文件编码与pageEncoding相同,否则会在jsp页面编译成servlet的时候出现乱码,进而导致响应的页面出现乱码
6.
iso-8859-1是JAVA网络传输使用的标准 字符集,而gb2312是标准中文字符集,一般是操作系统使用的文
字编码方式。
因此,当字符在网络中传递时,不管对于这个字符是怎么编码的,java都认为它是iso8859编码,因此按
照iso8859到unicode的转换规则,变成java保存字符的unicode编码,此时如果直接显示该字符时,将出
现乱码,因为它本身并不是iso8859的编码,而是GBK方式,对应unicode码自然也不正确,所以这时需要
做的是先将这个字符码可逆的转化为原先的编码值即GBK值,(转化方法就是通过getBytes(ISO-8859-1)
得到),然后java才将此GBk值的字符,以gbk到unicode的转化规则保存为java默认方式unicode码。
7.
那么我们可以得到一个编码转换的过程
假设:GBK码("你")->URLencode后变成->(?/)->Tomcat自动替你转一次ISO-8859-1->得到( 23 43 68
23 42 68 每一个符号表示为ISO-8859-1中的一个编码)->接收页面--->再转一次为ISO-8859-1的Byte数
组[23,43,68,23,42,68]--->用GBK再转为可读的文字--->(?/"---->转为("你")