注意:本文只在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>