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产生动态的影像图
Oct 09 PHP
php中截取中文字符串的代码小结
Jul 17 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
Jan 16 PHP
php中jQuery插件autocomplate的简单使用笔记
Jun 14 PHP
解析php DOMElement 操作xml 文档的实现代码
May 10 PHP
php读取图片内容并输出到浏览器的实现代码
Aug 08 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
Nov 12 PHP
PHP函数microtime()用法与说明
Dec 04 PHP
修改apache配置文件去除thinkphp url中的index.php
Jan 17 PHP
浅析php适配器模式(Adapter)
Nov 25 PHP
thinkphp中字符截取函数msubstr()用法分析
Jan 09 PHP
PHP Ajax跨域问题解决方案代码实例
Aug 01 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
微信 getAccessToken方法详解及实例
2016/11/23 PHP
让您的菜单不离网站
2006/10/03 Javascript
纯CSS打造的导航菜单(附jquery版)
2010/08/07 Javascript
JS 获取滚动条高度示例代码
2013/10/24 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
推荐JavaScript实现继承的最佳方式
2014/11/11 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
js实现选中页面文字将其分享到新浪微博
2015/11/05 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
Angular.Js的自动化测试详解
2016/12/09 Javascript
微信小程序 利用css实现遮罩效果实例详解
2017/01/21 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
vue 本地环境跨域请求proxyTable的方法
2018/09/19 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
Python FTP操作类代码分享
2014/05/13 Python
python MySQLdb Windows下安装教程及问题解决方法
2015/05/09 Python
python从网络读取图片并直接进行处理的方法
2015/05/22 Python
python一键升级所有pip package的方法
2017/01/16 Python
python代码实现ID3决策树算法
2017/12/20 Python
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
Python 经典面试题 21 道【不可错过】
2018/09/21 Python
详解如何为eclipse安装合适版本的python插件pydev
2018/11/04 Python
对python3新增的byte类型详解
2018/12/04 Python
python实现淘宝秒杀脚本
2020/06/23 Python
python实现图片,视频人脸识别(opencv版)
2020/11/18 Python
大学毕业感言一句话
2014/02/06 职场文书
博士生专家推荐信
2015/03/25 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
失恋33天观后感
2015/06/11 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python
浅谈golang 中time.After释放的问题
2021/05/05 Golang
springboot使用Redis作缓存使用入门教程
2021/07/25 Redis
volatile保证可见性及重排序方法
2022/08/05 Java/Android