URL-Dekodierungsfunktion, einfach und leicht zu verstehen. Der Hauptgrund ist, dass das ursprüngliche Chinesisch URL-codiert wurde. Wenn es speziell verwendet wird, muss es auf Chinesisch wiederhergestellt werden, sodass eine solche Funktion erforderlich ist. Zum Beispiel:
Wenn wir in Baidu nach Script Home suchen, sind die Parameter nach der URL
http://www.baidu.com/s?cl=3&wd=%BD%C5%B1%BE%D6%AE%BC%D2
Wenn wir %BD%C5%B1%BE%D6%AE%BC%D2 auf Chinesisch wiederherstellen möchten, verwenden Sie einfach die folgende Funktion.
<%
response.write urldecode(http://www.baidu.com/s?cl=3&wd=%BD%C5%B1%BE%D6%AE%BC%D2)
'=============================================
'Funktionsname: URLDecode
'Funktion: URL-Dekodierung
'=============================================
Funktion URLDecode(ByVal urlcode)
Dim start,final,length,char,i,butf8,pass
Dimmen Sie leftstr,rightstr,finalstr
Dim b0,b1,bx,blength,position,u,utf8
Bei Fehler Weiter fortsetzen
b0 = Array(192.224.240.248.252.254)
urlcode = Ersetzen(urlcode,+, )
bestanden = 0
utf8 = -1
length = Len(urlcode) : start = InStr(urlcode,%) : final = InStrRev(urlcode,%)
Wenn start = 0 oder Länge < 3, dann URLDecode = urlcode: Funktion beenden
leftstr = Left(urlcode,start - 1): rightstr = Right(urlcode,length - 2 - final)
Für i = Anfang bis Ende
char = Mid(urlcode,i,1)
Wenn char = %Dann
bx = URLDecode_Hex(Mid(urlcode,i + 1,2))
Wenn bx > 31 und bx < 128, dann
ich = ich + 2
finalstr = finalstr & ChrW(bx)
ElseIf bx > 127 Dann
ich = ich + 2
Wenn utf8 < 0, dann
butf8 = 1 : blength = -1 : b1 = bx
Für Position = 4 bis 0 Schritt -1
Wenn b1 >= b0(Position) und b1 < b0(Position + 1), dann
blength = Position
Ausgang für
Ende wenn
Nächste
Wenn blength > -1 Dann
Für Position = 0 bis blength
b1 = URLDecode_Hex(Mid(urlcode,i + position * 3 + 2,2))
Wenn b1 < 128 oder b1 > 191, dann butf8 = 0: Exit For
Nächste
Anders
butf8 = 0
Ende wenn
Wenn butf8 = 1 und blength = 0, dann ist butf8 = -2
Wenn butf8 > -1 und utf8 = -2, dann i = start - 1 : finalstr = : pass = 1
utf8 = butf8
Ende wenn
Wenn pass = 0, dann
Wenn utf8 = 1 Dann
b1 = bx : u = 0 : blength = -1
Für Position = 4 bis 0 Schritt -1
Wenn b1 >= b0(Position) und b1 < b0(Position + 1) dann
blength = Position
b1 = (b1 xOr b0(Position)) * 64 ^ (Position + 1)
Ausgang für
Ende wenn
Nächste
Wenn blength > -1 Dann
Für Position = 0 bis blength
bx = URLDecode_Hex(Mid(urlcode,i + 2,2)): i = i + 3
Wenn bx < 128 oder bx > 191, dann u = 0: Exit For
u = u + (bx Und 63) * 64 ^ (blength - position)
Nächste
Wenn u > 0, dann finalstr = finalstr & ChrW(b1 + u)
Ende wenn
Anders
b1 = bx * &h100 : u = 0
bx = URLDecode_Hex(Mid(urlcode,i + 2,2))
Wenn bx > 0, dann
u = b1 + bx
ich = ich + 3
Anders
Wenn Left(urlcode,1) = % Then
u = b1 + Asc(Mid(urlcode,i + 3,1))
ich = ich + 2
Anders
u = b1 + Asc(Mid(urlcode,i + 1,1))
ich = ich + 1
Ende wenn
Ende wenn
finalstr = finalstr & Chr(u)
Ende wenn
Anders
bestanden = 0
Ende wenn
Ende wenn
Anders
finalstr = finalstr & char
Ende wenn
Nächste
URLDecode = leftstr & finalstr & rightstr
Funktion beenden
Funktion URLDecode_Hex(ByVal h)
Bei Fehler Weiter fortsetzen
h = &h & Trim(h) : URLDecode_Hex = -1
Wenn Len(h) <> 4, dann Funktion beenden
Wenn isNumeric(h) dann URLDecode_Hex = cInt(h)
Funktion beenden
%>