Sabemos que el objeto del servidor ASP tiene un método URLEncode que puede codificar la dirección, pero no existe una función de decodificación correspondiente. La siguiente función puede decodificar URLEncode. El siguiente código está tomado del sistema kesion. De hecho, es bueno y admite el formato utf8.
Copie el código de código de la siguiente manera:
'=================================================
'Nombre de la función: URLDecode
'Función: decodificación de URL
'=================================================
Función URLDecode (ByVal código URL)
Inicio tenue,final,longitud,char,i,butf8,pass
Dim izquierda, derecha, final
Dim b0,b1,bx,blongitud,posición,u,utf8
En caso de error Continuar siguiente
b0 = Matriz(192,224,240,248,252,254)
código de URL = Reemplazar (código de URL,+,)
pasar = 0
utf8 = -1
longitud = Len (código de URL): inicio = InStr (código de URL,%): final = InStrRev (código de URL,%)
Si inicio = 0 o longitud <3, entonces URLDecode = código URL: Salir de la función
cadena izquierda = Izquierda (código de URL, inicio - 1): cadena de derechos = Derecha (código de URL, longitud - 2 - final)
Para i = inicio a final
char = Medio(código de URL,i,1)
Si char = %Entonces
bx = URLDecode_Hex(Medio(código de URL,i + 1,2))
Si bx > 31 y bx < 128 entonces
yo = yo + 2
cadena final = cadena final & ChrW(bx)
De lo contrario, si bx > 127, entonces
yo = yo + 2
Si utf8 < 0 entonces
perof8 = 1 : blongitud = -1 : b1 = bx
Para posición = 4 a 0 Paso -1
Si b1 >= b0(posición) Y b1 < b0(posición + 1) Entonces
blongitud = posición
Salir por
Terminar si
Próximo
Si blongitud > -1 Entonces
Para posición = 0 A blongitud
b1 = URLDecode_Hex(Mid(código de URL,i + posición * 3 + 2,2))
Si b1 < 128 O b1 > 191 Entonces butf8 = 0: Salir por
Próximo
Demás
perof8 = 0
Terminar si
Si butf8 = 1 y blength = 0 entonces butf8 = -2
Si butf8 > -1 Y utf8 = -2 Entonces i = start - 1 : finalstr = : pass = 1
utf8 = perof8
Terminar si
Si pasa = 0 Entonces
Si utf8 = 1 entonces
b1 = bx : u = 0 : blongitud = -1
Para posición = 4 a 0 Paso -1
Si b1 >= b0(posición) Y b1 < b0(posición + 1) Entonces
blongitud = posición
b1 = (b1 xO b0(posición)) * 64 ^ (posición + 1)
Salir por
Terminar si
Próximo
Si blongitud > -1 Entonces
Para posición = 0 A blongitud
bx = URLDecode_Hex(Mid(código de URL,i + 2,2)): i = i + 3
Si bx < 128 O bx > 191 Entonces u = 0: Salir por
u = u + (bx Y 63) * 64 ^ (blongitud - posición)
Próximo
Si u > 0 Entonces finalstr = finalstr & ChrW(b1 + u)
Terminar si
Demás
b1 = bx * &h100 : u = 0
bx = URLDecode_Hex(Medio(código de URL,i + 2,2))
Si bx > 0 Entonces
tu = b1 + bx
yo = yo + 3
Demás
Si izquierda (código de URL, 1) =% entonces
u = b1 + Asc(Mid(código de URL,i + 3,1))
yo = yo + 2
Demás
u = b1 + Asc(Mid(código de URL,i + 1,1))
yo = yo + 1
Terminar si
Terminar si
cadena final = cadena final & Chr(u)
Terminar si
Demás
pasar = 0
Terminar si
Terminar si
Demás
cadena final = cadena final y carácter
Terminar si
Próximo
URLDecode = cadena izquierda & cadena final & cadena derechos
Función final
Función URLDecode_Hex(ByVal h)
En caso de error Continuar siguiente
h = &h & Recortar(h): URLDecode_Hex = -1
Si Len(h) <> 4, entonces salga de la función
Si esNumeric(h) Entonces URLDecode_Hex = cInt(h)
Función final