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", 輸出到瀏覽器就自動轉換成漢字顯示了