Escape/Unescape加密解码/编码解码,又叫%u编码,从以往经验看编码字符串出现有"u",它是unicode编码,那么Escape编码采用是那一种unicode实现形式呢。其实是UTF-16BE模式。这样一来问题非常简单了。 Escape编码/加密,就是字符对应UTF-16 16进制表示方式前面加%u。Unescape解码/解密, 就是去掉"%u"后,将16进制字符还原后,由utf-16转码到自己目标字符。如:字符“中”,UTF-16BE是:“6d93”,因此Escape是 “%u6d93”,反之也一样!因为目前%字符,常用作URL编码,所以%u这样编码已经逐渐被废弃了!
PHP解码
1 function utf8_urldecode($str) 2 { 3 $str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($str)); 4 return html_entity_decode($str,null,'UTF-8');; 5 }
"&#x"开头的,后边跟16进制的数, 是浏览器识别的编码方式, 这个函数将"%u" 换做了 "&#x", 输出到浏览器就自动转换成汉字显示了