已解决了ajax(源文件编码gb2312)发送+php接收(源文件编码gb2312)中文乱码问题(utf-8也通用)

PHP代码

header('Content-Type:text/html; charset=gb2312');

$name = urldecode($_POST['name']);
$name = iconv('UTF-8','gb2312',$name);

if ( $name == '中国' ){//中文乱码,暂时用是否设置来判断,测试js的判断是否正常先,解决了乱码问题再直接比较输入的内容是否存在==
echo 'false';//有了
}else{
echo 'true';
}

----------------

js代码

------------

{
url: 'chk_user.PHP?d=中国',//服务端验证程序,返回格式注意:存在,返回false,不存在,返回true
data:{ name: function(){ return encodeURIComponent($("#name").val()); } },
type: "POST",//提交方式
contentType: "application/x-www-form-urlencoded; charset=UTF-8"
}

--------------

PHP 返回中(gb2312编码)

---------------------------------------

$_POST[name] => %E4%B8%AD%E5%9B%BD

$name = urldecode($_POST['name']); ==>涓 浗

$name = iconv('UTF-8',$name); ==> 中国

----------------------------------------------

js(gb2312)

---------------------
url: 'chk_user.PHP',//提交方式
contentType: "application/x-www-form-urlencoded; charset=UTF-8"

----------------------------------

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后直接使用;

相关文章

JS原生Ajax操作(XMLHttpRequest) GET请求 POST请求 兼容性问题 利用iframe模拟ajax 实现表单提交的返回...
AJAX 每日更新前端基础,如果觉得不错,点个star吧 😃 https://github.com/WindrunnerMax/E...
踩坑Axios提交form表单几种格式 前后端分离的开发前后端, 前端使用的vue,后端的安全模块使用的SpringSe...
很早就听闻ajax的名声,但是却一直不知道怎么用,今天自己捣鼓了一下,竟然会用了,哈哈哈哈。 为了防止...
需要在服务器上进行哈 jquery的ajax方法: // jquery请求 $.ajax({ url: "./server/slider.js...
Ajax函数封装ajax.js // Get / Post // 参数 get post // 是否异步 // 如何处理响应数据 // URL // var...