在客户端用javascript写入cookie,其中有中文字.在服务器端用PHP读出来中文变成了%u5957之类的符号,请问该用哪个函数还原中文,英文和数字没有问题.

解决方案 »

  1.   

    看看是不是js用了escape
    如果有的话就用
    function unescape($str) {
      $str = rawurldecode($str);
      preg_match_all("/(?:%u.{4})|&#x.{4};|&#\d+;|.+/U",$str,$r);
      $ar = $r[0];
    //print_r($ar);
      foreach($ar as $k=>$v) {
        if(substr($v,0,2) == "%u")
          $ar[$k] = iconv("UCS-2","UTF-8",pack("H4",substr($v,-4)));
        elseif(substr($v,0,3) == "&#x")
          $ar[$k] = iconv("UCS-2","UTF-8",pack("H4",substr($v,3,-1)));
        elseif(substr($v,0,2) == "&#") {
      //echo substr($v,2,-1)."<br>";
          $ar[$k] = iconv("UCS-2","UTF-8",pack("n",substr($v,2,-1)));
        }
      }
      return join("",$ar);
    }