PHP Unicode编码方法,将中文转为Unicode字符

字符串转换为Unicode编码

例如将字符串转换为unicode字符串,代码如下:

/将内容进行UNICODE编码

public function utf8_unicode($name){  
    $name = iconv('UTF-8', 'UCS-2', $name);  
    $len  = strlen($name);  
    $str  = '';  
    for ($i = 0; $i < $len - 1; $i = $i + 2){  
        $c  = $name[$i];  
        $c2 = $name[$i + 1];  
        if (ord($c) > 0){   //两个字节的文字  
            $str .= '\u'.base_convert(ord($c), 10, 16).str_pad(base_convert(ord($c2), 10, 16), 2, 0, STR_PAD_LEFT);  
            //$str .= base_convert(ord($c), 10, 16).str_pad(base_convert(ord($c2), 10, 16), 2, 0, STR_PAD_LEFT);  
        } else {  
            $str .= '\u'.str_pad(base_convert(ord($c2), 10, 16), 4, 0, STR_PAD_LEFT);  
            //$str .= str_pad(base_convert(ord($c2), 10, 16), 4, 0, STR_PAD_LEFT);  
        }  
    }  
    $str = strtoupper($str);//转换为大写  
    return $str;  
}  

unicode解码方法

将上面的unicode字符转换成中文,代码如下:

//unicode 转 utf-8 
public function unicode_decodessss($name)  
{  
    $name = strtolower($name);  
    // 转换编码,将Unicode编码转换成可以浏览的utf-8编码  
    $pattern = '/([\w]+)|(\\\u([\w]{4}))/i';  
    preg_match_all($pattern, $name, $matches);  
    if (!empty($matches))  
    {  
        $name = '';  
        for ($j = 0; $j < count($matches[0]); $j++)  
        {  
            $str = $matches[0][$j];  
            if (strpos($str, '\\u') === 0)  
            {  
                $code = base_convert(substr($str, 2, 2), 16, 10);  
                $code2 = base_convert(substr($str, 4), 16, 10);  
                $c = chr($code).chr($code2);  
                $c = iconv('UCS-2', 'UTF-8', $c);  
                $name .= $c;  
            }  
            else  
            {  
                $name .= $str;  
            }  
        }  
    }  
    return $name;  
}  
 
$unicode_str = "\u50bb\u732b\u7f51\u7edc\u65e5\u5fd7";
echo unicodeDecode($unicode_str);

总结:unicode的编码解码虽然代码不多,但是真要你写出来的话,一般情况下我们还不会,因此做个笔记记下来是一个不错的选择。

最后修改:2019 年 12 月 26 日
一分也是爱