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 相关文章推荐
使用 MySQL 开始 PHP 会话
Dec 21 PHP
php mssql 日期出现中文字符的解决方法
Mar 10 PHP
php中关于普通表单多文件上传的处理方法
Mar 25 PHP
比较简单实用的PHP无限分类源码分享(思路不错)
Oct 13 PHP
php中session退出登陆问题
Feb 27 PHP
yii实现级联下拉菜单的方法
Jul 31 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
Dec 31 PHP
PHP简单实现无限级分类的方法
May 13 PHP
ThinkPHP实现更新数据实例详解(demo)
Jun 29 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
PHP+redis实现的购物车单例类示例
Feb 02 PHP
PHP中命名空间的使用例子
Mar 22 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
利用laravel+ajax实现文件上传功能方法示例
2017/08/13 PHP
jQuery中DOM操作实例分析
2015/01/23 Javascript
JavaScript从数组中删除指定值元素的方法
2015/03/18 Javascript
javascript格式化指定日期对象的方法
2015/04/21 Javascript
avalon js实现仿微博拖动图片排序
2015/08/14 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
详解mpvue开发微信小程序基础知识
2019/09/23 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
[03:08]迎霜节狂欢!2018年迎霜节珍藏Ⅰ一览
2018/12/25 DOTA
[03:30]完美盛典趣味短片 CSGO2019年度名场面
2019/12/07 DOTA
Python中列表(list)操作方法汇总
2014/08/18 Python
python利用dir函数查看类中所有成员函数示例代码
2017/09/08 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
Python实现的三层BP神经网络算法示例
2018/02/07 Python
Python实现通过继承覆盖方法示例
2018/07/02 Python
python实现网页自动签到功能
2019/01/21 Python
Python3实现统计单词表中每个字母出现频率的方法示例
2019/01/28 Python
set在python里的含义和用法
2019/06/24 Python
python要安装在哪个盘
2020/06/15 Python
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
美国班级戒指、帽子和礼服、毕业产品、年鉴:Balfour
2018/11/01 全球购物
南京软件公司的.net程序员笔试题
2014/08/31 面试题
什么是托管函数?托管函数有什么用?
2014/06/15 面试题
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
在校硕士自我鉴定
2014/01/23 职场文书
大学优秀班主任事迹材料
2014/05/02 职场文书
村级换届选举方案
2014/05/10 职场文书
派出所所长先进事迹
2014/05/19 职场文书
大学生个人求职信
2014/06/02 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
python之json文件转xml文件案例讲解
2021/08/07 Python