过程
页面编码--------》浏览器转成一种编码的----------》浏览器url encoding------》发送给服务器
看看jquery的post
默认情况下都是将数据部分按utf-8发送,不管你页面是gbk、utf-8,全部转成utf-8的url编码
红色框里面在jquery中设置contentType:"application/x-www-form-urlencoded; charset=UTF-8",
火狐中即使设置成gbk请求头还是显示utf-8,好像是能识别,因为jquery都是按utf-8发送的
ie下要设置成utf-8,不设置它不会主动给你加上,而且可以设置gbk,这样是不对应的,会乱码,但是ie容许你这样做
红色框里面content-type 的charset 和在过滤器中设置request.setCharacterEncoding("UTF-8")是同样的效果。
可以用request.getCharacterEncoding()方法查看到。这样post的条件下就不会乱码。
看看jquery的get
默认是按照utf-8编码,即使它也有content-type,也就是相当于 在过滤器中设置request.setCharacterEncoding("UTF-8"),但是tomcat下对get不管用,所有直接取就会乱码
看看form的post和get
使用当前浏览器的编码,也就是查看--》编码里面的编码也是下面设置的编码,进行urlencoding的
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<a>链接的get方式
在firefox下测试和form 的get方式一样
window.open() 的get方式
在firefox下测试全都转成utf-8编码的urlcoding
jquery ajax 返回数据接受什么样的编码
默认的情况下是utf-8,如果是其他的编码就要设置
Content-Type application/json;charset=GBK