注意:本文只在UTF-8編碼環境下測試。因為在不同編碼環境下,asp(Server.UrlEncode)所編譯後的代碼好像不同,有待測試! 附轉載: vbscript(function URLDecode()) 復制代碼 代碼如下: <script type="text/VBscript"> <!-- Function URLDecode(enStr) dim deStr,strSpecial dim c,i,v deStr="" strSpecial="!""#$%&'()*+,.-_/:;<=>?@[\]^`{|}~%" for i=1 to len(enStr) c=Mid(enStr,i,1) if c="%" then v=eval("&h"+Mid(enStr,i+1,2)) if inStr(strSpecial,chr(v))>0 then deStr=deStr&chr(v) i=i+2 else v=eval("&h"+ Mid(enStr,i+1,2) + Mid(enStr,i+4,2)) deStr=deStr & chr(v) i=i+5 end if else if c="+" then deStr=deStr&" " else deStr=deStr&c end if end if next URLDecode=deStr End function //--> </script>
javascript(function UrlDecode())其實還是柔和使用了vbscript,好像在javascript環境中,對於asc、hex、chr相關的轉換,如 str.charCodeAt(0).toString(16) 及 String.fromCharCode(str) 在不同編碼下,對於中文的編碼結果還不統一。 比如: vbscript str2asc/asc2str 復制代碼 代碼如下: <script type="text/vbscript"> Function str2asc(strstr) str2asc = hex(asc(strstr)) End Function Function asc2str(ascasc) asc2str = chr(ascasc) End Function MsgBox str2asc("a") MsgBox asc2str("&H61")'16進制轉的61 轉到 10進制就是 97 </script>
javascript str2asc/asc2str 復制代碼 代碼如下: <script type="text/javascript"> function str2asc(str){ return str.charCodeAt(0).toString(16); } function asc2str(str){ return String.fromCharCode(str); } alert(str2asc("a"));// alert(asc2str("0x61"));// </script>