日期:2014-05-16  浏览次数:20716 次

中文乱码ajax HTML(GBK) → AJAX POST → PHP(GBK) 乱码!求解
本帖最后由 default7 于 2013-03-27 16:30:05 编辑
现象:GBK使用ajax POST传给GBK乱码。
描述:/form.html [GBK] 使用ajax POST传递给 /rec.php[GBK],/rec.php接收到的中文都是乱码的。/form.html [GBK] 使用ajax GET传递给 /rec.php[GBK],/rec.php接收到的是正常的中文。
发现:
①如果使用的是AJAX 的POST,不管如何在$.ajax()里面设置传递的头部,ajax永远都是用的UTF-8去传递。查看请求header有一行:

Content-Type:application/x-www-form-urlencoded; charset=UTF-8

②如果是GET方式,ajax没有自己发送那个 header 。/rec.php 接受到的GET数据中的中文是正常的未乱码!



求解:要求GBK的 /form.html 传递的POST数据,/rec.php可以接收到正常的数据。
想过了用escape,弄得非常麻烦。






ajax GBK POST 乱码 charset

------解决方案--------------------
自己写的ajax还是用哪个框架?

自己写的ajax一般不会设置charset=UTF-8请求头的,如果是其他框架,找到charset=UTF-8,删掉