PHP解码Unicode编码汉字码共享
问题的背景:在晚上,抓取一个Web数据,所以在数据包中找到编码数据:……u65b0 u535a u6d6a u5fae ......
解uff1a
哦,外国人真棒啊,点击这里看看外国人的解决方案。
程序A(稳定版本+推荐):
功能replace_unicode_escape_sequence($匹配){
返回mb_convert_encoding(包(H *,$匹配{ 1 }),'utf-8 ','ucs-2be);
}
$name = u65b0 u6d6a u5fae u535a;
$str = preg_replace_callback( / U({ 0-9a-f } { 4 }) /我,'replace_unicode_escape_sequence,$name);
新浪微博
我们将给出一个解决方案(一个稳定版本升级+ +推荐)。
类helper_tool
{
静态函数unicodedecode($数据)
{
功能replace_unicode_escape_sequence($匹配){
返回mb_convert_encoding(包(H *,$匹配{ 1 }),'utf-8 ','ucs-2be);
}
RS = preg_replace_callback美元( / U({ 0-9a-f } { 4 }) /我,'replace_unicode_escape_sequence,$data);
返回$ RS;
}
}
调用
$name = u65b0 u6d6a u5fae u535a;
美元:数据= helper_tool:unicodedecode($name); / /输出新浪微博
方案B(建议):
< PHP
功能unicodedecode($name){
$;
ARR = json_decode美元($ JSON,真的);
如果(空($ ARR))的回报;
返回的ARR { 'str};
}
$name = u65b0 u6d6a u5fae u535a;
回声unicodedecode($name); / /输出:新浪微博
B计划了,我要专注于下一个音符,在-一个朋友(猛戳XAR博客)的技术支持,总结出要处理的字符串(这是必要的,不能传递给函数的unicodedecode $name参数包括单引号,否则会失效,导致你可以使用str_replace()函数来非法字符为合格的字符格式)