首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

资料编码,AJAX编码学习笔记

2012-12-21 
文件编码,AJAX编码学习笔记Post方式:var urlajax.phpcontentname+encodeURIComponent(中文)xml

文件编码,AJAX编码学习笔记
Post方式:var url="ajax.php"; content='name='+encodeURIComponent('中文'); xmlHttp.open("POST",url,true); xmlHttp.setRequestHeader("Content-Length", content.length); xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlHttp.onreadystatechange=stateChanged; xmlHttp.send(content); GET方式:var url="ajax.php"; content='?name='+encodeURIComponent('中文');url += content; xmlHttp.onreadystatechange=stateChanged; xmlHttp.open("GET",url,true); xmlHttp.send(null);??

PHP页面有以下两种处理方式都不会出现乱码(接收到的都是UTF-8编码的字符串)一、如果没有设置header(),默认情况下会使用UTF-8的格式解析(有待考证)<?php$name = $_POST['name'];//$name = $_GET['name'];$name = urldecode($name);//此行可有可无,php接收是自动完成 如果包含'+'的话,这行要注释掉echo $name.mb_convert_encoding('你好!',"utf-8","gb2312");(gb2312 -> utf-8)二、 <?phpheader("Content-type:text/html;charset=gb2312;");$name = $_POST['name'];//$name = $_GET['name'];$name = urldecode($name);//此行可有可无,php接收是自动完成$name = mb_convert_encoding($name,"gb2312","utf-8");(utf-8 -> gb2312)echo $name.'你好!';
??3.ajax过程解析假设html的<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />使用content='name='+encodeURIComponent('中文');的时候'中文'在GBK格式下为encodeURIComponent('中文')='%D6%D0%CE%C4',由于ajax使用utf-8格式进行传输,所以传输的时候自动转化为‘中文’在UTF-8下的格式:‘%E4%B8%AD%E6%96%87’当在PHP页面上接受到的时候,PHP接受POST或者GET会自动进行 urldecode()操作此时urldecode('%E4%B8%AD%E6%96%87')得到的字符串就是UTF-8格式的'中文'?PHP 页面(编码为UTF-8)中echo '中'(0xE40xB80xAD)返回给ajax的请求端,A.? 如果有设置[header("Content-type:text/html;charset=UTF-8;");]就是告诉? ajax的接收器以'UTF-8'的格式来解析收到的字符串(0xE40xB80xAD)-> '0xE40xB80xAD'(中)? 然后ajax接收器把解析后的字符串再按照编码转换格式转化为html页面编码格式(gb2312)的字符串给html使用:? UTF-8 的'中'(0xE40xB80xAD) -> GB2312的'中'(0xD60xD0)? 然后html页面使用的字符串就是 GB2312的'中'(0xD60xD0)B.? 如果有设置[header("Content-type:text/html;charset=GB2312;");]就是告诉? ajax的接收器以'GB2312'的格式来解析收到的字符串(0xE40xB80xAD)-> '0xE40xB8'(涓) + ' 0xAD'(?)? 然后ajax接收器把解析后的字符串再按照编码转换格式转化为html页面编码格式(gb2312)的字符串给html使用:??GB2312 的'涓'(0xE40xB8) -> GB2312的'涓'(0xE40xB8)? 然后html页面使用的字符串就是 GB2312的'涓'(0xD60xD0)C.? 如果没有设置header(),默认情况下会使用UTF-8的格式解析(有待考证)?注:GBK格式下的'中文'的ASCII码为: 214 208?? 207 196(0xD60xD0 0xCE0xC4)???? 可以在GBK编码的PHP页面[header("Content-type:text/html;charset=gb2312;");]???? 下如此测试:echo chr(0xD6).chr(0xD0).chr(0xCE).chr(0xC4);得到的是 ‘中文’?? UTF-8格式下的'中文'的ASCII码为:0xE40xB80xAD 0xE60x960x87????? 验证方法同上 ?资料编码,AJAX编码学习笔记

????????????????????????????????????? 扩展ASCII字符表:

资料编码,AJAX编码学习笔记


?????

热点排行