Home  >  Article  >  Backend Development  >  How to convert unicode encoding in php

How to convert unicode encoding in php

藏色散人
藏色散人Original
2020-09-27 14:36:247563browse

php转换unicode编码的方法:首先创建一个PHP示例文件;然后通过“unicode_encode”方法将字符串转Unicode编码;最后使用“unicode_decode”方法将Unicode编码转字符串即可。

How to convert unicode encoding in php

推荐:《PHP视频教程

php字符串转Unicode编码, Unicode编码转php字符

百度了很多,都一样, 要么不对, 要不就是只是把字符串的汉字转Unicode

经过多次试验查找, 找到了如下方法,

注意:字符串编码必须是utf-8,如果不是自行用icon转一下

//字符串转Unicode编码
function unicode_encode($strLong) {
 $strArr = preg_split(&#39;/(?<!^)(?!$)/u&#39;, $strLong);//拆分字符串为数组(含中文字符)
 $resUnicode = &#39;&#39;;
 foreach ($strArr as $str)
 {
   $bin_str = &#39;&#39;;
   $arr = is_array($str) ? $str : str_split($str);//获取字符内部数组表示,此时$arr应类似array(228, 189, 160)
   foreach ($arr as $value)
   {
     $bin_str .= decbin(ord($value));//转成数字再转成二进制字符串,$bin_str应类似111001001011110110100000,如果是汉字"你"
   }
   $bin_str = preg_replace(&#39;/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/&#39;, &#39;$1$2$3&#39;, $bin_str);//正则截取, $bin_str应类似0100111101100000,如果是汉字"你"
   $unicode = dechex(bindec($bin_str));//返回unicode十六进制
   $_sup = &#39;&#39;;
   for ($i = 0; $i < 4 - strlen($unicode); $i++)
   {
     $_sup .= &#39;0&#39;;//补位高字节 0
   }
   $str = &#39;\\u&#39; . $_sup . $unicode; //加上 \u 返回
   $resUnicode .= $str;
 }
 return $resUnicode;
}
//Unicode编码转字符串方法1
function unicode_decode($name)
{
 // 转换编码,将Unicode编码转换成可以浏览的utf-8编码
 $pattern = &#39;/([\w]+)|(\\\u([\w]{4}))/i&#39;;
 preg_match_all($pattern, $name, $matches);
 if (!empty($matches))
 {
  $name = &#39;&#39;;
  for ($j = 0; $j < count($matches[0]); $j++)
  {
   $str = $matches[0][$j];
   if (strpos($str, &#39;\\u&#39;) === 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(&#39;UCS-2&#39;, &#39;UTF-8&#39;, $c);
    $name .= $c;
   }
   else
   {
    $name .= $str;
   }
  }
 }
 return $name;
}
//Unicode编码转字符串
function unicode_decode2($str){
 $json = &#39;{"str":"&#39; . $str . &#39;"}&#39;;
 $arr = json_decode($json, true);
 if (empty($arr)) return &#39;&#39;;
 return $arr[&#39;str&#39;];
}
 
echo unicode_encode(&#39;若水小站:qq963087326&#39;),&#39;<br>&#39;;
//结果\u82e5\u6c34\u5c0f\u7ad9\u003a\u0071\u0071\u0039\u0036\u0033\u0030\u0038\u0037\u0033\u0032\u0036
 
echo unicode_decode(&#39;\u82e5\u6c34\u5c0f\u7ad9\u003a\u0071\u0071\u0039\u0036\u0033\u0030\u0038\u0037\u0033\u0032\u0036&#39;);
//结果若水小站:qq963087326

The above is the detailed content of How to convert unicode encoding in php. For more information, please follow other related articles on the PHP Chinese website!

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