分享PHP UTF-8和Unicode编码互转(多语言)

2015年9月27日星期日 | | |

PHP UTF-8和Unicode编码互转

/**        * //将内容进行UNICODE编码       * utf-8 转unicode       *        * @param string $name       * @return string       */      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 转 utf-8        *        * @param string $name        * @return string        */        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;        }    


调用及结果:

$utf8_str = '我';    //这是汉字"你"的Unicode编码  $unicode_str = '\u4f60';    //输出 6211  echo utf8_unicode($utf8_str) . "<br/>";    //输出汉字"你"  echo unicode_decodes($unicode_str);  


注:  由于浏览器默认会解读,所以要看源代码


\U6211<br/>  你

0 评论:


所有文章收集于网络,如果有牵扯到版权问题请与本站站长联系。谢谢合作![email protected]