一聚教程网:一个值得你收藏的教程网站

热门教程

示例:PHP实现Unicode编码相互转换的方法

时间:2022-06-24 22:41:52 编辑:袖梨 来源:一聚教程网

ps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-">本文实例讲述了PHP实现Unicode编码相互转换的方法。分享给大家供大家参考,具体如下:

 
 代码如下 复制代码
/**
* $str 原始中文字符串
* $encoding 原始字符串的编码,默认utf-8
* $prefix 编码后的前缀,默认"&#"
* $postfix 编码后的后缀,默认";"
*/
functionunicode_encode($str,$encoding='utf-8',$prefix='&#',$postfix=';') {
 //将字符串拆分
 $str= iconv("UTF-8","gb2312",$str);
 $cind= 0;
 $arr_cont=array();
 for($i= 0;$i
  if(strlen(substr($str,$cind, 1)) > 0) {
   if(ord(substr($str,$cind, 1)) < 0xA1) {//如果为英文则取1个字节
    array_push($arr_cont,substr($str,$cind, 1));
    $cind++;
   }else{
    array_push($arr_cont,substr($str,$cind, 2));
    $cind+=2;
   }
  }
 }
 foreach($arr_contas&$row) {
  $row= iconv("gb2312","UTF-8",$row);
 }
 //转换Unicode码
 foreach($arr_contas$key=>$value) {
  $unicodestr.=$prefix.base_convert(bin2hex(iconv('utf-8','UCS-4',$value)), 16, 10) .$postfix;
 }
 return$unicodestr;
}
/**
* $str Unicode编码后的字符串
* $decoding 原始字符串的编码,默认utf-8
* $prefix 编码字符串的前缀,默认"&#"
* $postfix 编码字符串的后缀,默认";"
*/
functionunicode_decode($unistr,$encoding='utf-8',$prefix='&#',$postfix=';') {
 $arruni=explode($prefix,$unistr);
 $unistr='';
 for($i= 1,$len=count($arruni);$i<$len;$i++) {
  if(strlen($postfix) > 0) {
   $arruni[$i] =substr($arruni[$i], 0,strlen($arruni[$i]) -strlen($postfix));
  }
  $temp=intval($arruni[$i]);
  $unistr.= ($temp< 256) ?chr(0) .chr($temp) :chr($temp/ 256) .chr($temp% 256);
 }
 returniconv('UCS-2',$encoding,$unistr);
}
$str="PHP编程:www.jb51.net";
$unistr= unicode_encode($str);
$unistr2= unicode_decode($unistr);
echo$unistr.'
';
echo$unistr2.'
';
$unistr= unicode_encode($str,'GBK','\u');
$unistr2= unicode_decode($unistr,'GBK','\u');
echo$unistr.'
';
echo$unistr2.'
';
 

热门栏目