支持iconv【php.ini:extension=php_iconv.dll】
-----------------------------------
$str = "张三";
$str = iconv('', 'UTF-8', $str);
print_r($str);

解决方案 »

  1.   

    不支持iconv
    -----------------------
    $str = "张三";
    print_r( unescape($str) );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)."
    ";
         $ar[$k] = iconv("UCS-2","UTF-8",pack("n",substr($v,2,-1)));
       }
     }
     return join("",$ar);
    }------------------
    这些在手册中都有Di
      

  2.   

    function unescape($str) {
    //----------------------------------
    //这部分功能同iconv
        $str = rawurldecode($str);
        preg_match_all("/(?:%u.{4})|&#x.{4};|&#\d+;|.+/U",$str,$r);
        $ar = $r[0];
        //print_r($ar);
        return join("",$ar);
    //----------------------------------
    //这部分功能是根据上面的转换为unicode
        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)."
        ";
             $ar[$k] = iconv("UCS-2","UTF-8",pack("n",substr($v,2,-1)));
           }
         }
    ----------------------------------
    }