昨天把自己的留言本后台回复改成AJAX无刷新的时候POST数据到服务器端中文总是乱码,郁闷的很~后来在网上查了一下才知道 JavaScript 用 XmlHTTP POST数据时中文是被当成 UTF-8 编码发送出去的,一个解决的方法是在客户端把中文用 JavaScript 的 escape() 函数编码了再到服务器端解码,可是在服务器端怎么解码呢,那就看下面一段我从网上找到的 PHP 中和 JavaScript 的 unescape() 函数功能一样的解码函数吧(这句话怎么听着有点别扭??)
PHP代码
function unescape($str){ $str = rawurldecode($str); preg_match_all("/%u.{4}|&#x.{4};|&#d+;|.+/U",$str,$r); $ar = $r[0]; foreach($ar as $k=>$v){ if(substr($v,0,2) == "%u"){ $ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,-4))); }elseif(substr($v,0,3) == "&#x"){ $ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,3,-1))); }elseif(substr($v,0,2) == "&#"){ $ar[$k] = iconv("UCS-2","GBK",pack("n",substr($v,2,-1))); } } return join("",$ar); }
学习学习