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代码
Dec 06 PHP
php zip文件解压类代码
Dec 02 PHP
php microtime获取浮点的时间戳
Feb 21 PHP
两种设置php载入页面时编码的方法
Jul 29 PHP
百度地图API使用方法详解
Aug 25 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
Nov 10 PHP
thinkPHP3.1验证码的简单实现方法
Apr 22 PHP
php实现图片以base64显示的方法
Oct 13 PHP
php封装一个异常的处理类
Jun 08 PHP
简单实用的PHP文本缓存类实例
Mar 22 PHP
解决laravel5.4下的group by报错的问题
Oct 16 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 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输出XML到页面的3种方法详解
2013/06/06 PHP
10个简化PHP开发的工具
2014/12/25 PHP
图片自动更新(说明)
2006/10/02 Javascript
Javascript中Eval函数的使用说明
2008/10/11 Javascript
基于jQuery试卷自动排版系统
2010/07/18 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
2013/01/17 Javascript
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
2013/04/28 Javascript
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
了不起的node.js读书笔记之node的学习总结
2014/12/22 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
JS中with的替代方法与String中的正则方法详解
2016/12/23 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
2017/06/12 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
JS实现点击循环切换显示内容的方法
2017/10/19 Javascript
vue组件实现可搜索下拉框扩展
2020/10/23 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
Vue中watch、computed、updated三者的区别及用法
2020/07/27 Javascript
[48:12]Secret vs Optic Supermajor 胜者组 BO3 第三场 6.4
2018/06/05 DOTA
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
python 自定义对象的打印方法
2019/01/12 Python
python实现dijkstra最短路由算法
2019/01/17 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
python制作朋友圈九宫格图片
2019/11/03 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
执法作风整顿剖析材料
2014/10/11 职场文书
重阳节主题班会
2015/08/17 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
Java 多线程并发FutureTask
2022/06/28 Java/Android