Función de decodificación de URL, simple y fácil de entender. La razón principal es que el chino original ya está codificado en URL. Cuando se usa específicamente, es necesario restaurarlo al chino, por lo que se necesita dicha función. Por ejemplo:
Cuando buscamos Script Home en Baidu, los parámetros después de la URL son
http://www.baidu.com/s?cl=3&wd=%BD%C5%B1%BE%D6%AE%BC%D2
Si queremos restaurar %BD%C5%B1%BE%D6%AE%BC%D2 al chino, simplemente use la siguiente función.
<%
respuesta.escribir código URL (http://www.baidu.com/s?cl=3&wd=%BD%C5%B1%BE%D6%AE%BC%D2)
'=================================================
'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,+,)
pase = 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
%>