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下几个常用的去空、分组、调试数组函数
Feb 22 PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
Oct 12 PHP
探讨:parse url解析URL,返回其组成部分
Jun 14 PHP
php二维数组用键名分组相加实例函数
Nov 06 PHP
php生成年月日下载列表的方法
Apr 24 PHP
如何把php5.3版本升级到php5.4或者php5.5
Jul 31 PHP
PHP实现搜索相似图片
Sep 22 PHP
使用phpstorm和xdebug实现远程调试的方法
Dec 29 PHP
Laravel的throttle中间件失效问题解决方法
Oct 09 PHP
Yii CFileCache 获取不到值的原因分析
Feb 08 PHP
PHP设计模式之状态模式定义与用法详解
Apr 02 PHP
PHP延迟静态绑定的深入讲解
Apr 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新手上路(十一)
2006/10/09 PHP
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
PHP中is_file不能替代file_exists的理由
2014/03/04 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
ThinkPHP和UCenter接口冲突的解决方法
2016/07/25 PHP
PHP crypt()函数的用法讲解
2019/02/15 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
javascript中onclick(this)用法介绍
2013/04/19 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
2013/07/28 Javascript
js使用post 方式打开新窗口
2015/02/26 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
2016/11/22 Javascript
原生js仿淘宝网商品放大镜效果
2017/02/28 Javascript
详解js静态检查工具eslint配置文件
2018/11/23 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
vue实现验证用户名是否可用
2021/01/20 Vue.js
[56:58]VP vs Optic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
Python正则表达式匹配中文用法示例
2017/01/17 Python
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
一家专门经营包包的英国网站:MyBag
2019/09/08 全球购物
市场营销专业毕业生自荐信
2013/11/02 职场文书
后勤人员岗位职责
2013/12/17 职场文书
模具数控专业自荐信
2014/01/27 职场文书
房地产开盘策划方案
2014/02/10 职场文书
广告创意求职信
2014/03/17 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
MySQL数字类型自增的坑
2021/05/07 MySQL
SQLServer之常用函数总结详解
2021/08/30 SQL Server
使用SQL实现车流量的计算的示例代码
2022/02/28 SQL Server
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS