PHP Unicode编码方法,将中文转为Unicode字符 字符串转换为Unicode编码 --------------- 例如将字符串转换为unicode字符串,代码如下: /将内容进行UNICODE编码 public 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解码方法 ----------- 将上面的unicode字符转换成中文,代码如下: //unicode 转 utf-8 public 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; } $unicode_str = "\u50bb\u732b\u7f51\u7edc\u65e5\u5fd7"; echo unicodeDecode($unicode_str); 总结:unicode的编码解码虽然代码不多,但是真要你写出来的话,一般情况下我们还不会,因此做个笔记记下来是一个不错的选择。 Loading... PHP Unicode编码方法,将中文转为Unicode字符 字符串转换为Unicode编码 --------------- 例如将字符串转换为unicode字符串,代码如下: /将内容进行UNICODE编码 public 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解码方法 ----------- 将上面的unicode字符转换成中文,代码如下: //unicode 转 utf-8 public 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; } $unicode_str = "\u50bb\u732b\u7f51\u7edc\u65e5\u5fd7"; echo unicodeDecode($unicode_str); 总结:unicode的编码解码虽然代码不多,但是真要你写出来的话,一般情况下我们还不会,因此做个笔记记下来是一个不错的选择。 最后修改:2019 年 12 月 26 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 支持就是力量