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与XML的PDF文档生成技术
Oct 09 PHP
PHP系统流量分析的程序
Oct 09 PHP
BBS(php &amp; mysql)完整版(七)
Oct 09 PHP
php下使用SMTP发邮件的代码
Jan 10 PHP
在字符串指定位置插入一段字符串的php代码
Feb 16 PHP
php 上传功能实例代码
Apr 13 PHP
工厂模式在Zend Framework中应用介绍
Jul 10 PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
Mar 05 PHP
php通过sort()函数给数组排序的方法
Mar 18 PHP
Laravel 修改验证异常的响应格式实例代码详解
May 25 PHP
php并发加锁问题分析与设计代码实例讲解
Feb 26 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 array_multisort函数 对数据库结果进行复杂排序
2013/06/08 PHP
如何在PHP环境中使用ProtoBuf数据格式
2020/06/19 PHP
Javascript实例教程(19) 使用HoTMetal(6)
2006/12/23 Javascript
Script的加载方法小结
2011/01/12 Javascript
js判断样式className同时增加class或删除class
2013/01/30 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
JavaScript实现LI列表数据绑定的方法
2015/08/04 Javascript
js操作table元素实现表格行列新增、删除技巧总结
2015/11/18 Javascript
jQuery实现的兼容性浮动层示例
2016/08/02 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
2016/08/10 Javascript
jquery延迟对象解析
2016/10/26 Javascript
js判断一个字符串是以某个字符串开头的简单实例
2016/12/27 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
Vue2.0实现组件数据的双向绑定问题
2018/03/06 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
详解如何运行vue项目
2019/04/15 Javascript
vue 中几种传值方法(3种)
2019/11/12 Javascript
原生js拖拽实现图形伸缩效果
2020/02/10 Javascript
DJANGO-ALLAUTH社交用户系统的安装配置
2014/11/18 Python
Python验证企业工商注册码
2015/10/25 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
2021/01/13 Python
乌克兰电子和家用电器商店:Foxtrot
2019/07/23 全球购物
Carrs Silver官网:英国著名的银器品牌
2020/08/29 全球购物
社区工作者先进事迹
2014/01/18 职场文书
旺仔牛奶广告词
2014/03/20 职场文书
房屋出售协议书
2014/04/10 职场文书
家长建议怎么写
2014/05/15 职场文书
班级读书活动总结
2014/06/30 职场文书
会计实训报告范文
2014/11/04 职场文书
2015年党风廉政建设个人总结
2015/08/18 职场文书
新学期家长寄语2016
2015/12/03 职场文书
2016年基层党组织创先争优承诺书
2016/03/25 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书