PHP解码unicode编码的中文字符代码分享


Posted in PHP onAugust 13, 2014

问题背景:
晚上在抓取某网站数据,结果在数据包中发现了这么一串编码的数据:"......\u65b0\u6d6a\u5fae\u535a......", 这其实是中文被unicode编码后了的数据,我现在就是想解码出中文来,上度娘搞了半天,试了很多的姿(方)势(法),终于搞定了。

解决方案:
呵呵,老外就是给力啊, 猛戳这里看老外给的解决方案

方案A(稳定版+推荐):

function replace_unicode_escape_sequence($match) {
  return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
}
$name = '\u65b0\u6d6a\u5fae\u535a';
$str = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 'replace_unicode_escape_sequence', $name);
echo $str; //输出: 新浪微博
//咱将上述方案A给封装起来~~~(方案A稳定版+升级+推荐)
class Helper_Tool
{
  static function unicodeDecode($data)
  {  
    function replace_unicode_escape_sequence($match) {
      return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
    }  
 
    $rs = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 'replace_unicode_escape_sequence', $data);
 
    return $rs;
  }  
}
//调用
$name = '\u65b0\u6d6a\u5fae\u535a';
$data = Helper_Tool::unicodeDecode($name); //输出新浪微博

 
方案B(次推荐):

<?php
function unicodeDecode($name){
  $json = '{"str":"'.$name.'"}';
  $arr = json_decode($json,true);
  if(empty($arr)) return ''; 
  return $arr['str'];
}
$name = '\u65b0\u6d6a\u5fae\u535a';
echo unicodeDecode($name); //输出: 新浪微博

对于方案B, 我要特别重点说明下注意事项, 在好友 XAR (猛戳XAR博客) 的技术支持下,总结出要处理的字符串(即传递给函数unicodeDecode的参数$name的内容中一定不能包含单引号,否则就会导致解析失败, 所以有必要的话可以借助 str_replace()函数将非法字符格式化为合格字符)

PHP 相关文章推荐
PHP新手上路(十二)
Oct 09 PHP
PHP数字格式化
Dec 06 PHP
php addslashes 函数详细分析说明
Jun 23 PHP
php通过文件头检测文件类型通用代码类(zip,rar等)
Oct 19 PHP
PHP Directory 函数的详解
Mar 07 PHP
解析php入库和出库
Jun 25 PHP
8个必备的PHP功能开发
Oct 02 PHP
PHP+jQuery翻板抽奖功能实现
Oct 19 PHP
详解HTTP Cookie状态管理机制
Jan 14 PHP
PHP文件下载实例代码浅析
Aug 17 PHP
Yii2使用$this-&gt;context获取当前的Module、Controller(控制器)、Action等
Mar 29 PHP
PHP的mysqli_select_db()函数讲解
Jan 23 PHP
使用ob系列函数实现PHP网站页面静态化
Aug 13 #PHP
PHP语法自动检查的Vim插件
Aug 11 #PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
Aug 11 #PHP
Parse正式发布开源PHP SDK
Aug 11 #PHP
Php连接及读取和写入mysql数据库的常用代码
Aug 11 #PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
Aug 11 #PHP
php向js函数传参的几种方法
Aug 10 #PHP
You might like
php 高效率写法 推荐
2010/02/21 PHP
PHP中对缓冲区的控制实现代码
2013/09/29 PHP
php计算当前程序执行时间示例
2014/04/24 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
php解决DOM乱码的方法示例代码
2016/11/20 PHP
什么是PHP文件?如何打开PHP文件?
2017/06/27 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
React Native中导航组件react-navigation跨tab路由处理详解
2017/10/31 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
python实现的文件同步服务器实例
2015/06/02 Python
Python生成密码库功能示例
2017/05/23 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
2020/04/26 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
windows10在visual studio2019下配置使用openCV4.3.0
2020/07/14 Python
Python获取android设备cpu和内存占用情况
2020/11/15 Python
python 爬虫请求模块requests详解
2020/12/04 Python
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
不同浏览器创建XMLHttpRequest方法有什么不同
2014/11/17 面试题
求职简历自荐信
2013/10/20 职场文书
租房合同协议书
2014/04/09 职场文书
工程承诺书怎么写
2014/05/24 职场文书
设计大赛策划方案
2014/06/13 职场文书
Java elasticsearch安装以及部署教程
2021/06/28 Java/Android
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python