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 xml文件操作代码(一)
Mar 20 PHP
火车采集器 免费版使出收费版本功能实现原理
Sep 17 PHP
php下图片文字混合水印与缩略图实现代码
Dec 11 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
Jul 05 PHP
PHP嵌套输出缓冲代码实例
May 12 PHP
php判断用户是否手机访问代码
Jun 08 PHP
php错误日志简单配置方法
Jul 11 PHP
使用WAMP搭建PHP本地开发环境
May 10 PHP
利用php操作memcache缓存的基础方法示例
Aug 02 PHP
laravel 修改.htaccess文件 重定向public的解决方法
Oct 12 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缓存技术详细总结
2013/08/07 PHP
PHP中使用数组指针函数操作数组示例
2014/11/19 PHP
PHP常用的排序和查找算法
2015/08/06 PHP
php入门教程之Zend Studio设置与开发实例
2016/09/09 PHP
javascript实现 在光标处插入指定内容
2007/05/25 Javascript
实例分析javascript中的call()和apply()方法
2014/11/28 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
2016/02/12 Javascript
微信小程序 判断手机号的实现代码
2017/04/19 Javascript
JavaScript阻止表单提交方法(附代码)
2017/08/15 Javascript
Three.js实现绘制字体模型示例代码
2017/09/26 Javascript
vue 挂载路由到头部导航的方法
2017/11/13 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
4个顶级JavaScript高级文本编辑器
2018/10/10 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
Python的迭代器和生成器使用实例
2015/01/14 Python
更改Python命令行交互提示符的方法
2015/01/14 Python
简单的编程0基础下Python入门指引
2015/04/01 Python
Python语言的面相对象编程方式初步学习
2016/03/12 Python
wxpython布局的实现方法
2019/11/01 Python
python 二维矩阵转三维矩阵示例
2019/11/30 Python
Python过滤掉numpy.array中非nan数据实例
2020/06/08 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
员工拓展培训方案
2014/02/15 职场文书
《雷雨》教学反思
2014/02/20 职场文书
酒鬼酒广告词
2014/03/21 职场文书
关于读书的演讲稿400字
2014/08/27 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
学会感恩主题班会
2015/08/12 职场文书
反邪教教育心得体会
2016/01/15 职场文书
十大最强奥特曼武器:怪兽战斗仪在榜,第五奥特之父只使用过一次
2022/03/18 日漫
关于vue-router-link选择样式设置
2022/04/30 Vue.js