menu

天魔窟

勇往直前

Avatar

ASP FAQ # Chinese [2]

http://www.aspfaq.com/show.asp?id=2404

如何 Encode 和 Decode URL 地址?

这个问题比较热门的说~ASP 的 Server 对象提供了一个 Server.Encode() 方法,但是却没有相应的 Server.Decode() 方法或者 Unencode() 方法 >_< 也许 M$ 认为这没必要……大错特错啊。这样的方法非常有用,这里提供一种实现~包括 VBScript 和 JScript 代码。

VBScript

<% 
    Function URLDecode(str) 
        str = Replace(str, "+", " ") 
        For i = 1 To Len(str) 
            sT = Mid(str, i, 1) 
            If sT = "%" Then 
                If i+2 < Len(str) Then 
                    sR = sR & _ 
                        Chr(CLng("&H" & Mid(str, i+1, 2))) 
                    i = i+2 
                End If 
            Else 
                sR = sR & sT 
            End If 
        Next 
        URLDecode = sR 
    End Function 
 
    Function URLEncode(str) 
        URLEncode = Server.URLEncode(str) 
    End Function 
 
    str1 = "http://www.foo.com/blah.asp?foo=1 & 2 &g=0" 
    str2 = URLEncode(str1) 
    str3 = URLDecode(str2) 
    Response.Write(str1 & "<br>" & str2 & "<br>" & str3) 
%>

JScript

<script language=JScript runat=server> 
 
    function URLDecode(str) 
    { 
        return unescape(str); 
    } 
 
    function URLEncode(str) 
    { 
        str = escape(str); 
 
        // JScript doesn't think '/' needs to be escaped... 
        // I'm not sure it does either, but take it out to be 
        // consistent with VBScript's built-in URLEncode() 
 
        while (str.indexOf("/")!=-1) 
        { 
            str = str.replace("/","%2F"); 
        } 
        return str; 
    } 
 
    var str1 = "http://www.foo.com/blah.asp?foo=1 & 2 &g=0"; 
    var str2 = URLEncode(str1); 
    var str3 = URLDecode(str2); 
    Response.Write(str1 + "<br>" + str2 + "<br>" + str3) 
 
</script>

好文章。。不过外国银的东东没法解决俺们中文的问题。。
url带中文的话,这个东东就不好使了。。

doom2 强,我都忽略了这个问题,改天研究一下。
不过因为默认情况下,URL 字符串的编码都是 UTF-8,所以我想中文应该是可以正确处理的。Try later...

强。。。。

老不动代码都看不懂了……

弄个libiconv就行了....不过似乎只能for php..

呵呵

评论已关闭