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 相关文章推荐
如何将一个表单同时提交到两个地方处理
Oct 09 PHP
用PHP和ACCESS写聊天室(五)
Oct 09 PHP
深入php var_dump()函数的详解
Jun 05 PHP
php实现文件下载(支持中文文名)
Dec 04 PHP
PHP MVC框架skymvc支持多文件上传
May 26 PHP
PHP实现的同步推荐操作API接口案例分析
Nov 30 PHP
php使用PDO执行SQL语句的方法分析
Feb 16 PHP
PHP常用的三种设计模式
Feb 17 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
使用PHPExcel导出Excel表
Sep 08 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
Apr 16 PHP
Laravel框架控制器的middleware中间件用法分析
Sep 30 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
我的论坛源代码(六)
2006/10/09 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
解析isset与is_null的区别
2013/08/09 PHP
ioncube_loader_win_5.2.dll的错误解决方法
2015/01/04 PHP
PHP统一页面编码避免乱码问题
2015/04/09 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
JS window.opener返回父页面的应用
2009/10/24 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
jquery实现点击页面计算点击次数
2015/01/23 Javascript
微信小程序开发之Tabbar实例详解
2017/01/09 Javascript
React中ES5与ES6写法的区别总结
2017/04/21 Javascript
Vue.js组件实现选项卡以及切换特效
2019/07/24 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
Python中matplotlib中文乱码解决办法
2017/05/12 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
numpy.transpose对三维数组的转置方法
2018/04/17 Python
对Python中range()函数和list的比较
2018/04/19 Python
python解决js文件utf-8编码乱码问题(推荐)
2018/05/02 Python
python实现随机漫步方法和原理
2019/06/10 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
Keras使用tensorboard显示训练过程的实例
2020/02/15 Python
python读取excel进行遍历/xlrd模块操作
2020/07/12 Python
ECCO爱步加拿大官网:北欧丹麦鞋履及皮具品牌
2017/07/08 全球购物
巴西宠物商店:Cobasi
2019/04/19 全球购物
输入N,打印N*N矩阵
2012/02/20 面试题
摄影实习自我鉴定
2013/09/20 职场文书
小学生家长寄语
2014/04/02 职场文书
竞选大队委员演讲稿
2014/04/28 职场文书
离婚协议书怎么写
2015/01/26 职场文书
法学专业求职信范文
2015/03/19 职场文书
婚宴来宾致辞
2015/07/28 职场文书
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL
详细介绍python操作RabbitMq
2022/04/12 Python