公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

ASP中只有UrlEncode,沒(méi)有Urldecode問(wèn)題的解決方法?

admin
2022年6月21日 15:15 本文熱度 2043

在A(yíng)SP中傳遞參數(shù)時(shí)有一個(gè)很有用的系統(tǒng)函數(shù)Server.UrlEncode,可以將一些非字母數(shù)字、中文等符號(hào)轉(zhuǎn)換成標(biāo)準(zhǔn)URL編碼(其實(shí)就是16進(jìn)制ASC碼),這樣就解決了參數(shù)傳遞亂碼的問(wèn)題。

Server.URLEncode("內(nèi)容")

然后我以為也提供了Server.UrlDecode,但使用后卻發(fā)現(xiàn)程序報(bào)錯(cuò),原來(lái)系統(tǒng)并沒(méi)有提供這個(gè)我想象中的解碼函數(shù)。怎幺辦,自己動(dòng)手吧。

UrlEncode的原理其實(shí)很簡(jiǎn)單,就是將特殊字符轉(zhuǎn)換成16進(jìn)制ASC碼值,那么譯碼函數(shù)就只要將16進(jìn)制ASC轉(zhuǎn)回對(duì)應(yīng)的字符就OK了。

這是推薦的解碼方法:

function URLDecode(strIn)

  URLDecode = ""

  Dim sl: sl = 1

  Dim tl: tl = 1

  Dim key: key = "%"

  Dim kl: kl = Len(key)

  sl = InStr(sl, strIn, key, 1)

  Do While sl>0

    If (tl=1 And sl<>1) Or tl<sl Then

        URLDecode = URLDecode & Mid(strIn, tl, sl-tl)

    End If

    Dim hh, hi, hl

    Dim a

    select Case UCase(Mid(strIn, sl+kl, 1))

      Case "U":                  'Unicode URLEncode

        a = Mid(strIn, sl+kl+1, 4)

        URLDecode = URLDecode & ChrW("&H" & a)

        sl = sl + 6

      Case "E":                   'UTF-8 URLEncode

        hh = Mid(strIn, sl+kl, 2)

        a = Int("&H" & hh)          'ascii碼

        If Abs(a)<128 Then

          sl = sl + 3

          URLDecode = URLDecode & Chr(a)

        Else

          hi = Mid(strIn, sl+3+kl, 2)

          hl = Mid(strIn, sl+6+kl, 2)

          a = ("&H" & hh And &H0F) * 2 ^12 Or ("&H" & hi And &H3F) * 2 ^ 6 Or ("&H" & hl And &H3F)

          If a<0 Then a = a + 65536

          URLDecode = URLDecode & ChrW(a)

          sl = sl + 9

        End If

      Case Else:                      'Asc URLEncode

        hh = Mid(strIn, sl+kl, 2)   '高位

        a = Int("&H" & hh)          'ascii碼

        If Abs(a)<128 Then

        sl = sl + 3

        Else

        hi = Mid(strIn, sl+3+kl, 2) '低位

        a = Int("&H" & hh & hi)     '非ascii碼

        sl = sl + 6

        End If

        URLDecode = URLDecode & Chr(a)

    End select

    tl = sl

    sl = InStr(sl, strIn, key, 1)

  Loop

  URLDecode = URLDecode & Mid(strIn, tl)

End function

下面是另外一種解碼方法:

Function URLDecode(enStr)                    'URL解碼函數(shù)

  dim deStr

  dim c,i,v

  deStr=""

  for i=1 to len(enStr)

    c=Mid(enStr,i,1)

    if c="%" then

      v=eval("&h"+Mid(enStr,i+1,2))

      if v<128 then

        deStr=deStr&chr(v)

        i=i+2

      else

        if isvalidhex(mid(enstr,i,3)) then

          if isvalidhex(mid(enstr,i+3,3)) then

            v=eval("&h"+Mid(enStr,i+1,2)+Mid(enStr,i+4,2))

            deStr=deStr&chr(v)

            i=i+5

          else

            v=eval("&h"+Mid(enStr,i+1,2)+cstr(hex(asc(Mid(enStr,i+3,1)))))

            deStr=deStr&chr(v)

            i=i+3

          end if

        else

          destr=destr&c

        end if

      end if

    else

      if c="+" then

        deStr=deStr&" "

      else

        deStr=deStr&c

      end if

    end if

  next

  URLDecode=deStr

end function


function isvalidhex(str)

  isvalidhex=true

  str=ucase(str)

  if len(str)<>3 then isvalidhex=false:exit function

  if left(str,1)<>"%" then isvalidhex=false:exit function

  c=mid(str,2,1)

  if not (((c>="0") and (c<="9")) or ((c>="A") and (c<="Z"))) then isvalidhex=false:exit function

  c=mid(str,3,1)

  if not (((c>="0") and (c<="9")) or ((c>="A") and (c<="Z"))) then isvalidhex=false:exit function

end function

經(jīng)測(cè)試gb312格式的asp使用沒(méi)有問(wèn)題。

下面是另外一種方法,如果上面的方法出錯(cuò),那么就用下面這個(gè)試試:

Function URLDecode(ByVal urlcode)                    'URL解碼函數(shù)

  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


該文章在 2024/11/16 17:56:15 編輯過(guò)

全部評(píng)論1

admin
2023年10月23日 11:19

 又一種算法:

Public Function URLDecode(ByVal data, ByVal charset)

  Dim strm

  Set strm = Server.createObject("ADODB.Stream")

  With strm

    .type = 2

    .charset = "iso-8859-1"

    .open

    .writeText unescape(data)

    .position = 0

    .charset = charset

    URLDecode = .readText(-1)

    .close

  End With

  Set strm = Nothing

End Function


Response.Write URLDecode("%B4%F3%BC%D2%BA%C3%B0%A1", "GB2312") & "<br/>"

Response.Write URLDecode("%E5%A4%A7%E5%AE%B6%E5%A5%BD%E5%95%8A", "UTF-8") & "<br/>"

Response.Write URLDecode("http%3A%2F%2Fwww.dangdang.com%2F", "UTF-8") & "<br/>"


該評(píng)論在 2024/11/16 17:57:53 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 91嫩草国产线免费观看91 | 极品美女亚洲区 | 精品少妇人妻av一区二区三区 | 成人片黄色大片 | 国产精品一区在线观看你懂的 | 国产成人亚洲综合无码18禁禁 | 国产成人涩涩涩视频在线观看 | 91精品国产自产在线啪免费 | 精品国产一区二区三区四区特色 | 高潮歹无毛免费观看 | 东京伊人一本到鬼色 | 91精品亚洲 | 18禁止午夜福 | 国产一二三区视频 | 国产亚洲日本精品成人专区 | 国产一区二区无码视频 | 国产v亚洲v天堂宗合 | 国产午夜精品一区二 | 国产成人国拍亚洲精品 | 99精品久久久久中 | 国产午夜精品视频 | 91精品国产91综合久久蜜臀 | 成人精品天堂一区二区三区 | 国产主播资源在线播放 | 国产精品乱码久久久 | 国产午夜精品1区2区3福利 | 按摩高潮a片一区二区三区 按摩师舌头进去添的我好舒服 | 99久久国产免费福利 | 国产成人精品一区二区三区免费 | 福利片在线观看免费高清视频 | 成年夜99九九久久 | 国产a级作爱| 国产最大成人亚洲精品 | 国产在线拍揄自揄拍无码视 | 国产成人尤物精品一区 | 国产成人18黄网 | 国产91精品久久久久999 | 国产日韩欧美另类重口在线 | 国产精品青草久久久久福利99 | 爆乳jk美女脱内衣裸体网站 | 动漫精品中文字幕无码第一页 |