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 相关文章推荐
UCenter Home二次开发指南
May 28 PHP
PHPLog php 程序调试追踪工具
Sep 09 PHP
MySQL 日期时间函数常用总结
Jun 12 PHP
php四种基础算法代码实例
Oct 29 PHP
php去除数组中重复数据
Nov 18 PHP
又十个超级有用的PHP代码片段
Sep 24 PHP
php批量修改表结构实例
May 24 PHP
php mysql数据库操作类(实例讲解)
Aug 06 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
Oct 11 PHP
Laravel框架模板继承操作示例
Jun 11 PHP
PHP PDOStatement::errorCode讲解
Jan 31 PHP
Laravel + Elasticsearch 实现中文搜索的方法
Feb 02 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 运行效率总结(提示程序速度)
2009/11/26 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
PHP自定义函数实现格式化秒的方法
2016/09/14 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
laravel实现按时间日期进行分组统计方法示例
2019/03/23 PHP
一组JS创建和操作表格的函数集合
2009/05/07 Javascript
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
2012/03/01 Javascript
javascript图片相似度算法实现 js实现直方图和向量算法
2014/01/14 Javascript
Node.js编码规范
2014/07/14 Javascript
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
2015/10/14 Javascript
Vue.js 2.0中select级联下拉框实例
2017/03/06 Javascript
微信小程序富文本渲染引擎的详解
2017/09/30 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
微信小程序实现动态列表项的顺序加载动画
2019/07/25 Javascript
基于layPage插件实现两种分页方式浅析
2019/07/27 Javascript
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
微信小程序canvas动态时钟
2020/10/22 Javascript
简单介绍Python中的readline()方法的使用
2015/05/24 Python
python Django框架实现自定义表单提交
2016/03/25 Python
使用python 3实现发送邮件功能
2018/06/15 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
python中使用zip函数出现错误的原因
2018/09/28 Python
提升Python程序性能的7个习惯
2019/04/14 Python
Python如何把Spark数据写入ElasticSearch
2020/04/18 Python
PyQt5实现简单的计算器
2020/05/30 Python
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
三月学雷锋月活动总结
2014/04/28 职场文书
学校政风行风自查自纠报告
2014/10/21 职场文书
MySQL限制查询和数据排序介绍
2022/03/25 MySQL
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫