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自动反斜杠的函数代码
Jan 05 PHP
PHP文件打开、关闭、写入的判断与执行代码
May 24 PHP
XAMPP安装与使用方法详细解析
Nov 27 PHP
preg_match_all使用心得分享
Jan 31 PHP
destoon复制新模块的方法
Jun 21 PHP
Codeigniter实现发送带附件的邮件
Mar 19 PHP
CodeIgniter分页类pagination使用方法示例
Mar 28 PHP
yii2中的rules 自定义验证规则详解
Apr 19 PHP
PHP预定义变量9大超全局数组用法详解
Apr 23 PHP
PHP打印输出函数汇总
Aug 28 PHP
PHP实现类似于C语言的文件读取及解析功能
Sep 01 PHP
PDO::inTransaction讲解
Jan 28 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抽象工厂模式(Elgg)
2010/03/21 PHP
php上传图片存入数据库示例分享
2014/03/11 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
javascript 对象比较实现代码
2009/04/27 Javascript
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
为EasyUI的Tab标签添加右键菜单的方法
2012/07/14 Javascript
jquery入门—访问DOM对象方法
2013/01/07 Javascript
JS下拉框内容左右移动效果的具体实现
2013/07/10 Javascript
处理及遍历XML文档DOM元素属性及方法整理
2013/08/23 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
nodejs教程之异步I/O
2014/11/21 NodeJs
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
Vue 使用beforeEach实现登录状态检查功能
2019/10/31 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
浅析python的优势和不足之处
2018/11/20 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
关于numpy.where()函数 返回值的解释
2019/12/06 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
python + selenium 刷B站播放量的实例代码
2020/06/12 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
Java基础面试题
2014/07/19 面试题
JS原生实现轮播图的几种方法
2021/03/23 Javascript
春节联欢晚会主持词范文
2014/03/24 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
中华美德颂演讲稿
2014/05/20 职场文书
校园演讲稿汇总
2014/05/21 职场文书
单位工作证明范文
2014/09/14 职场文书
python和anaconda的区别
2022/05/06 Python