Jquery的ajax在IE提交数据乱码解决方法

乱码是因为编码不同而造成的。在ajax post 或 get时都有可能出现乱码。

为了避免乱码,可以做到以下几步

解决方法

1,保持编码的统一,包括文件编码,数据库编码,网页content-type编码

检查一下<meta http-equiv=”content-type” content=”text/html; charset=UTF-8″ />

建议中文都是用UTF-8,使用gbk/gb2312有可能会出现乱码

2,使用post来发送而不是get

get方法是会通过链接来传递参数,而且会自动urlEncode(编码),而各个浏览器编码的方式可能不太一样。使用post可以避免这种情况。

3,通过在js前端escape编码再发送,然后后台解码取得数据

这些可以在网上搜索

4,在全局设定contentType,指定编码

因为jquery ajax是使用utf-8来编码发送数据的,ie在发送时却没加上charset=utf-8,从而导致乱码(IE默认使用iso-8859-1编码)

$.ajaxSetup({
	contentType: "application/x-www-form-urlencoded; charset=utf-8"
});



fatkun

14条评论

get方法是会通过链接来传递参数,而且会自动urlEncode(编码) 。
原来如此,那么就是浏览器显示的时候是已经urlDecode了?
还有在litspeed环境下面,参数包含http://是会出错的,估计木有自动urlEncode,o(* ̄▽ ̄*)ゞ ~

貌似IE是用iso-8859-1来编码链接,而chrome用utf-8编码,无论哪种编码,最后英文字母都是一样
例如链接
“http://www.baidu.com/s?wd=http://测试”
在chrome按utf-8编码变成了http://www.baidu.com/s?wd=http://%B2%E2%CA%D4
在ie中编码中中文不同(因为用iso-8859-1标准编码)

浏览器显示时是因为后台程序接收时解码了。

说错了,chrome 中的编码unicode变为 测试=%E6%B5%8B%E8%AF%95
ie的貌似是gbk编码
这里有篇文章:http://www.kuqin.com/webpagedesign/20100216/79756.html

这要看什么操作系统,什么版本的IE,英文操作系统,英文IE,默认好像是iso-8859-1

$.ajaxSetup({ contentType: “application/x-www-form-urlencoded; charset=utf-8”});第四个没用啊 ,加上了

发表评论

电子邮件地址不会被公开。