产品搜索



     


 


php 怎么将 unicode 编码转 简体中文


网页开发往往会遇到“ \u56de\u590d\uff1a “ 这类 unicode 编码,如何专为中文?

第一种方法

$unicodeChar = "\u56de\u590d\uff1a";
function unicodeString($str, $encoding=null) {
    return preg_replace_callback('/\\\\u([0-9a-fA-F]{4})/u', create_function('$match', 'return mb_convert_encoding(pack("H*", $match[1]), "utf-8", "UTF-16BE");'), $str);
}
echo  unicodeString($unicodeChar);

第二种 方法

$unicodeChar = "\u56de\u590d\uff1a";
function unicodeString($str, $encoding=null) {
    return preg_replace_callback('/\\\\u([0-9a-fA-F]{4})/u', create_function('$match', 'return mb_convert_encoding(pack("H*", $match[1]), "utf-8", "UTF-16BE");'), $str);
}
echo  unicodeString($unicodeChar);

第一个只能针对性的转码,第二种是碰到  \u56de\u590d\uff1a  这种编码再解码。

还有&#开头字符转码。例如实木这类代码

最简便有效方法

$catmap='实木床';

$catmap = html_entity_decode(preg_replace("/U\+([0-9A-F]{4})/", "&#x\\1;", $catmap), ENT_NOQUOTES, 'UTF-8');

echo $catmap;

函数方法

 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-2BE" , "UTF-8" ,pack( "H4" , substr ( $v ,-4)));
   }
         elseif ( substr ( $v ,0,3) == "&#x" ){
             $ar [ $k ] = iconv( "UCS-2BE" , "UTF-8" ,pack( "H4" , substr ( $v ,3,-1)));
   }
         elseif ( substr ( $v ,0,2) == "&#" ) {
             $ar [ $k ] = iconv( "UCS-2BE" , "UTF-8" ,pack( "n" , substr ( $v ,2,-1)));
         }
     }
     return join( "" , $ar );
}

 


前一篇:php相似度代码

下一篇:如何用curl抓取本机文件?