首页 > 语言 > PHP > 正文

PHP中对汉字进行unicode编码和解码的实现方法

2024-09-04 11:49:23
字体:
来源:转载
供稿:网友
  1. //将内容进行UNICODE编码 
  2. functionunicode_encode($name
  3.   $name= <a href="/tags.php/iconv/" target="_blank">iconv</a>('UTF-8','UCS-2',$name); 
  4.   $len=strlen($name); 
  5.   $str='' 
  6.   for($i= 0;$i<$len- 1;$i=$i+ 2) 
  7.   { 
  8.     $c=$name[$i]; 
  9.     $c2=$name[$i+ 1]; 
  10.     if(ord($c) > 0) 
  11.     { // 两个字节的文字 
  12.       $str.='/u'.base_convert(ord($c), 10, 16).base_convert(ord($c2), 10, 16); 
  13.     } 
  14.     else 
  15.     { 
  16.       $str.=$c2
  17.     } 
  18.   } 
  19.   return$str
  20. $name='MY,你大爷的' 
  21. $unicode_name=unicode_encode($name); 
  22. echo
  23. // 将UNICODE编码后的内容进行解码 
  24. functionunicode_decode($name
  25.   // 转换编码,将Unicode编码转换成可以浏览的utf-8编码 
  26.   $pattern='/([/w]+)|(///u([/w]{4}))/i' 
  27.   <a href="/tags.php/preg_match/" target="_blank">preg_match</a>_all($pattern,$name,$matches); 
  28.   if(!emptyempty($matches)) 
  29.   { 
  30.     $name='' 
  31.     for($j= 0;$j<count($matches[0]);$j++) 
  32.     { 
  33.       $str=$matches[0][$j]; 
  34.       if(strpos($str,'//u') === 0) 
  35.       { 
  36.         $code=base_convert(<a href="/tags.php/substr/" target="_blank">substr</a>($str, 2, 2), 16, 10); 
  37.         $code2=base_convert(substr($str, 4), 16, 10); 
  38.         $c=chr($code).chr($code2); 
  39.         $c= iconv('UCS-2','UTF-8',$c); 
  40.         $name.=$c
  41.       } 
  42.       else 
  43.       { 
  44.         $name.=$str
  45.       } 
  46.     } 
  47.   } 
  48.   return$name
  49. echo'MY,/u4f60/u5927/u7237/u7684 -> '.unicode_decode($unicode_name); 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表