PHP解码unicode编码的中文字符代码分享
2023-06-13 09:15:42 时间
问题背景:
晚上在抓取某网站数据,结果在数据包中发现了这么一串编码的数据:"......\u65b0\u6d6a\u5fae\u535a......",这其实是中文被unicode编码后了的数据,我现在就是想解码出中文来,上度娘搞了半天,试了很多的姿(方)势(法),终于搞定了。
解决方案:
呵呵,老外就是给力啊,猛戳这里看老外给的解决方案
方案A(稳定版+推荐):
functionreplace_unicode_escape_sequence($match){ returnmb_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稳定版+升级+推荐) classHelper_Tool { staticfunctionunicodeDecode($data) { functionreplace_unicode_escape_sequence($match){ returnmb_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 functionunicodeDecode($name){ $json="{"str":"".$name.""}"; $arr=json_decode($json,true); if(empty($arr))return""; return$arr["str"]; } $name="\u65b0\u6d6a\u5fae\u535a"; echounicodeDecode($name);//输出:新浪微博
对于方案B,我要特别重点说明下注意事项,在好友XAR(猛戳XAR博客)的技术支持下,总结出要处理的字符串(即传递给函数unicodeDecode的参数$name的内容中一定不能包含单引号,否则就会导致解析失败,所以有必要的话可以借助str_replace()函数将非法字符格式化为合格字符)
相关文章
- PHP辅导代做编程:CS353 Database System
- 测试MySQL触发器构建:PHP测试实例(mysql触发器php)
- Linux切换PHP版本:快速而安全的方法(linux切换php版本)
- PHP 存储数据到 MySQL 数据库(php写入mysql)
- 和 php 如何配合使用Redis类库搭配PHP编程:高效开发与灵活操作(redis类库)
- Linux下如何重启PHP环境(linux重启php)
- 数据库MySQL 数据库的 PHP 扩展研究(php扩展mysql)
- PHP操作MySQL数据库,实现强大的数据功能(php调用mysql数据库)
- 使用PHP快速实现MySQL查询(php实现mysql查询)
- 扩展如何在PHP中开启Redis扩展(php开启redis)
- 利用PHP操作Redis变得更简单(php中redis的使用)
- PHP如何正确输出MySQL中文字符避免乱码?(php输出mysql乱码)
- PHP文件快速导入MySQL数据库(php文件导入mysql)
- PHP还是MSSQL:谁能成为你最佳开发工具?(用php还是mssql好)
- 中的应用使用Redis,提升PHP程序效率(redis缓存在php)
- php字符串截取中文截取2,单字节截取模式
- PHP提取中文首字母
- PHP中文乱码解决办法总结分析
- PHP脚本的10个技巧(7)
- php中文和编码判断代码
- php开发环境配置记录
- PHP和Mysqlweb应用开发核心技术第1部分Php基础-1开始了解php
- AJAX中文乱码PHP中完美解决方法
- PHP使用json_encode函数时不转义中文的解决方法
- PHP里8个鲜为人知的安全函数分析