Home >Backend Development >PHP Tutorial >unicode_to_utf8 in PHP

unicode_to_utf8 in PHP

WBOY
WBOYOriginal
2016-06-23 14:36:311321browse

当短信格式为8:UCS2编码的时候,需要把Unicode的十六进制编码转换成UTF8,但是PHP没有内置Unicode的支持,怎么办呢?

/* *
    * 把Unicode的十六进制字符串转换成utf8的文本字符串
    * @param mixed $str 要转换的字符串,不能为null
    * @return utf8的文本字符串
*/
public   static   function  unicode_hex_to_utf8( $str )    {
     // 判断长度
     if (( strlen ( $str ) % 4 )  !=   0  )
         throw   new   exception ( ' (strlen($str) % 4 != 0 ' );
     // 计算byte[]的长度
     $len   =   strlen ( $str ) / 4 ;
     $str_result   =   '' ;
     // 循环复制
     for ( $i = 0 ; $i          $str_unicode_hex   =   substr ( $str ,   $i * 4 ,   4 );
         $str_result   .=  self :: unicode_to_utf8( $str_unicode_hex );
    }
     return   $str_result ;
}

private    static   function  unicode_to_utf8(  $unicode_hex  ) {

     $unicode   =   hexdec ( $unicode_hex );

     $utf8   =   '' ;

     if  (  $unicode            $utf8   =   chr (  $unicode  );

    }  elseif  (  $unicode            $utf8   .=   chr (  192   +  ( (  $unicode   -  (  $unicode   %   64  ) )  /   64  ) );
         $utf8   .=   chr (  128   +  (  $unicode   %   64  ) );

    }  else  {

         $utf8   .=   chr (  224   +  ( (  $unicode   -  (  $unicode   %   4096  ) )  /   4096  ) );
         $utf8   .=   chr (  128   +  ( ( (  $unicode   %   4096  )  -  (  $unicode   %   64  ) )  /
         64  ) );
         $utf8   .=   chr (  128   +  (  $unicode   %   64  ) );

    }  //  if
     return   $utf8 ;
}  //  unicode_to_utf8

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:IIS7.5+PHPNext article:php报错