简化版 分站 地图 日历 影视
计算器 行情 加解密 长度 面积
首页 软件 编程 笑话 知识 公告 注册 登录 用QQ登录本站
文明驾车我带头,文明行路我带头,礼貌让座我带头      

[公益] 节省一分零钱 献出一份爱心 温暖世间真情      
广告位招租中
2021年 春 节 23
2021年 情人节 25
2021年 元宵节 37
2022年 元 旦 346
全部 综合数码金融娱乐服务报刊政府机构 推荐 申请 友情  
  • 您现在的位置:首页 >> ASP >> 内容

    ASP的URLDecode函数URLEncode解码函数

    内容摘要: ASP的Server对象有个URLEncode方法可以对地址进行编码,但却没有相应的解码函数,下边的这个函数可以实现对URLEncode的解码。下面的代码是从kesion系统扒下的,确实不错,支持utf8格式。'================================================'函数名:URLDecode'作 用:URL解码'=......

      ASP的Server对象有个URLEncode方法可以对地址进行编码,但却没有相应的解码函数,下边的这个函数可以实现对URLEncode的解码。

    下面的代码是从kesion系统扒下的,确实不错,支持utf8格式。



    '================================================

    '函数名:URLDecode

    '作 用:URL解码

    '================================================

    Function URLDecode(ByVal urlcode)

    Dim start,final,length,char,i,butf8,pass

    Dim leftstr,rightstr,finalstr

    Dim b0,b1,bx,blength,position,u,utf8

    On Error Resume Next


    b0 = Array(192,224,240,248,252,254)

    urlcode = Replace(urlcode,"+"," ")

    pass = 0

    utf8 = -1


    length = Len(urlcode) : start = InStr(urlcode,"%") : final = InStrRev(urlcode,"%")

    If start = 0 Or length < 3 Then URLDecode = urlcode : Exit Function

    leftstr = Left(urlcode,start - 1) : rightstr = Right(urlcode,length - 2 - final)


    For i = start To final

    char = Mid(urlcode,i,1)

    If char = "%" Then

    bx = URLDecode_Hex(Mid(urlcode,i + 1,2))

    If bx > 31 And bx < 128 Then

    i = i + 2

    finalstr = finalstr & ChrW(bx)

    ElseIf bx > 127 Then

    i = i + 2

    If utf8 < 0 Then

    butf8 = 1 : blength = -1 : b1 = bx

    For position = 4 To 0 Step -1

    If b1 >= b0(position) And b1 < b0(position + 1) Then

    blength = position

    Exit For

    End If

    Next

    If blength > -1 Then

    For position = 0 To blength

    b1 = URLDecode_Hex(Mid(urlcode,i + position * 3 + 2,2))

    If b1 < 128 Or b1 > 191 Then butf8 = 0 : Exit For

    Next

    Else

    butf8 = 0

    End If

    If butf8 = 1 And blength = 0 Then butf8 = -2

    If butf8 > -1 And utf8 = -2 Then i = start - 1 : finalstr = "" : pass = 1

    utf8 = butf8

    End If

    If pass = 0 Then

    If utf8 = 1 Then

    b1 = bx : u = 0 : blength = -1

    For position = 4 To 0 Step -1

    If b1 >= b0(position) And b1 < b0(position + 1) Then

    blength = position

    b1 = (b1 xOr b0(position)) * 64 ^ (position + 1)

    Exit For

    End If

    Next

    If blength > -1 Then

    For position = 0 To blength

    bx = URLDecode_Hex(Mid(urlcode,i + 2,2)) : i = i + 3

    If bx < 128 Or bx > 191 Then u = 0 : Exit For

    u = u + (bx And 63) * 64 ^ (blength - position)

    Next

    If u > 0 Then finalstr = finalstr & ChrW(b1 + u)

    End If

    Else

    b1 = bx * &h100 : u = 0

    bx = URLDecode_Hex(Mid(urlcode,i + 2,2))

    If bx > 0 Then

    u = b1 + bx

    i = i + 3

    Else

    If Left(urlcode,1) = "%" Then

    u = b1 + Asc(Mid(urlcode,i + 3,1))

    i = i + 2

    Else

    u = b1 + Asc(Mid(urlcode,i + 1,1))

    i = i + 1

    End If

    End If

    finalstr = finalstr & Chr(u)

    End If

    Else

    pass = 0

    End If

    End If

    Else

    finalstr = finalstr & char

    End If

    Next

    URLDecode = leftstr & finalstr & rightstr

    End Function


    Function URLDecode_Hex(ByVal h)

    On Error Resume Next

    h = "&h" & Trim(h) : URLDecode_Hex = -1

    If Len(h) <> 4 Then Exit Function

    If isNumeric(h) Then URLDecode_Hex = cInt(h)

    End Function

      版权声明:本内容来源于互联网,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。


    发布日期:2020/12/10 发布时间:16:04:30 点击:319 录入:齐天大圣
  • 上一篇:asp限制域名访问实现代码
  • 下一篇:获取当前url参数的函数
  • 本类新增
    本类热门文章
    Baidu

    YiJiaCMS V3.88 Build 20.12.22(MSSQL) 闽ICP备05000814号-1
    本空间由景安网络提供,百度云加速提供加速防护
    齐天大圣® 制 作 ©2000-2021