很多情况下,我们都会遇到经过unicode转换后的字符串,例如下面这条链接地址:
https:\u002f\u002fHK1-word-view.officeapps.live.com\u002fwv\u002fwordviewerframe.aspx?ui=zh\u00252DCN\u0026rs=zh\u00252DCN\u0026WOPISrc=http\u00253A\u00252F\u00252Fhk1\u00252Dview\u00252Dwopi\u00252Ewopi\u00252Elive\u00252Enet\u00253A808\u00252Foh\u00252Fwopi\u00252Ffiles\u00252F\u002540\u00252FwFileId\u00253FwFileId\u00253D\u0026access_token_ttl=0
转换后的字符串中的\u编码的字符可读性差,在内容传输及js中使用是没有问题的,但如果直接复制到浏览器访问或者在php里面做一些处理,是件比较麻烦的事情,浏览器无法解释这样的链接,所有需要将编码后的字符串转换成可读形式,下面简单介绍两种方式:
第一种是通过函数回调方式处理:
function decodeUnicode($str){
return preg_replace_callback('/\\\\u([0-9a-f]{4})/i', function($matches){
return mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UCS-2BE");
}, $str);
}
第二种是通过将字符串拼接成json格式,再使用json_decode的形式解码:
$url = 'xxxx';
$str = '["'.$url.'"]';
$str_decode = json_decode($str, true);
$decode_url = $str_decode[0];