已解决了ajax(源文件编码gb2312)发送+php接收(源文件编码gb2312)
php代码 header('Content-Type:text/html; charset=gb2312'); ---------------- js代码 ------------ { -------------- 在php 返回中(gb2312编码) --------------------------------------- $_POST[name] => %E4%B8%AD%E5%9B%BD $name = urldecode($_POST['name']); ==>涓 浗 $name = iconv('UTF-8',$name); ==> 中国 ---------------------------------------------- js(gb2312) --------------------- ---------------------------------- post参数 encodeURIComponent('中国') ==> %E4%B8%AD%E5%9B%BD alert( '|' + decodeURIComponent('%E4%B8%AD%E5%9B%BD') + '|') ==> |中国| escape('%E4%B8%AD%E5%9B%BD') == > %25E4%25B8%25AD%25E5%259B%25BD alert( '|' + decodeURIComponent(unescape('%25E4%25B8%25AD%25E5%259B%25BD')) + '|') ==> |中国| 看来post的发送要escape一次 ------------------------------- 中国的firefox地址栏编码是: %D6%D0%B9%FA ---------------------------- 其实php中encode是正常的,就是js中的encode是不正常的,看起来它应该是把所有的都解释成了utf8,这是这个问题的关键, 大概意思就是: 源代码编码是gb2312时的htm,l在使用ajax发送时,假设是post方式,data中要把gb2312编码的中文,使用uriencodecomment编码成utf8编码后,注意,无论源代码是gb2312还是utf-8,使用它编码都是得到utf-8的uri编码,所以在php边要decodeuri解码,解码后它还是utf-8来的,如果php源代码是gb2312,那么就需要用iconv反utf-8转成gb2312;如源文件是utf-8就无需转码;解码uri后直接使用; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |