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编程中八种常见的文件操作方式
Nov 19 PHP
PHP MSSQL 存储过程的方法
Dec 24 PHP
腾讯QQ php程序员面试题目整理
Jun 08 PHP
linux下删除7天前日志的代码(php+shell)
Jan 02 PHP
通过5个php实例细致说明传值与传引用的区别
Aug 08 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
Aug 05 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
Aug 21 PHP
php获取当前页面完整URL地址
Dec 30 PHP
php 数组元素快速去重
May 05 PHP
Yii2选项卡的简单使用
May 26 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
laravel5表单唯一验证的实例代码
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
再次研究下cache_lite
2007/02/14 PHP
php中文字符串截取方法实例总结
2014/09/30 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
2018/10/23 PHP
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
javascript 的Document属性和方法集合
2010/01/25 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
2013/04/25 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
2014/09/26 NodeJs
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
深入剖析Node.js cluster模块
2018/05/23 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
layui的表单提交以及验证和修改弹框的实例
2019/09/09 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
Python3导入CSV文件的实例(跟Python2有些许的不同)
2018/06/22 Python
启动Atom并运行python文件的步骤
2018/11/09 Python
解析python实现Lasso回归
2019/09/11 Python
Pycharm 安装 idea VIM插件的图文教程详解
2020/02/21 Python
Django models文件模型变更错误解决
2020/05/11 Python
pyqt5 textEdit、lineEdit操作的示例代码
2020/08/12 Python
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
岗位标兵事迹材料
2014/05/17 职场文书
诚信贷款承诺书
2014/05/30 职场文书
外贸业务员求职信
2014/06/16 职场文书
英语复习计划
2015/01/19 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
使用feign服务调用添加Header参数
2021/06/23 Java/Android
JS实现页面炫酷的时钟特效示例
2022/08/14 Javascript