Função de decodificação de URL, simples e fácil de entender. A principal razão é que o chinês original foi codificado por URL. Quando usado especificamente, ele precisa ser restaurado para o chinês, portanto, essa função é necessária. Por exemplo:
Quando procuramos Script Home no Baidu, os parâmetros após o URL são
http://www.baidu.com/s?cl=3&wd=%BD%C5%B1%BE%D6%AE%BC%D2
Se quisermos restaurar %BD%C5%B1%BE%D6%AE%BC%D2 para chinês, basta usar a seguinte função.
<%
resposta.write urldecode (http://www.baidu.com/s?cl=3&wd=%BD%C5%B1%BE%D6%AE%BC%D2)
'===============================================
'Nome da função: URLDecode
'Função: decodificação de URL
'===============================================
Função URLDecode (urlcode ByVal)
Dim start,final,length,char,i,butf8,pass
Dim leftstr,rightstr,finalstr
Dim b0,b1,bx,bcomprimento,posição,u,utf8
Em caso de erro, retomar o próximo
b0 = Matriz(192.224.240.248.252.254)
urlcode = Substituir(urlcode,+, )
passar = 0
utf8 = -1
comprimento = Len(urlcode): início = InStr(urlcode,%): final = InStrRev(urlcode,%)
Se início = 0 ou comprimento <3 Então URLDecode = urlcode: função de saída
leftstr = Esquerda (urlcode, início - 1): rightstr = Right (urlcode, comprimento - 2 - final)
Para i = início até final
char = Mid(urlcode,i,1)
Se char = %Então
bx = URLDecode_Hex(Mid(urlcode,i + 1,2))
Se bx > 31 E bx < 128 Então
eu = eu + 2
finalstr = finalstr & ChrW(bx)
ElseIf bx > 127 Então
eu = eu + 2
Se utf8 <0 então
masf8 = 1: bcomprimento = -1: b1 = bx
Para posição = 4 a 0 Passo -1
Se b1 >= b0(posição) E b1 <b0(posição + 1) Então
bcomprimento = posição
Sair para
Terminar se
Próximo
Se comprimento > -1 Então
Para posição = 0 Para bcomprimento
b1 = URLDecode_Hex(Mid(urlcode,i + posição * 3 + 2,2))
Se b1 <128 Ou b1> 191 Então butf8 = 0: Sair para
Próximo
Outro
masf8 = 0
Terminar se
Se butf8 = 1 E blength = 0 Então butf8 = -2
Se butf8> -1 E utf8 = -2 Então i = start - 1: finalstr =: pass = 1
utf8 = masf8
Terminar se
Se passar = 0 Então
Se utf8 = 1 Então
b1 = bx : u = 0 : bcomprimento = -1
Para posição = 4 a 0 Passo -1
Se b1 >= b0(posição) E b1 <b0(posição + 1) Então
bcomprimento = posição
b1 = (b1 xOr b0(posição)) * 64 ^ (posição + 1)
Sair para
Terminar se
Próximo
Se comprimento > -1 Então
Para posição = 0 Para bcomprimento
bx = URLDecode_Hex(Mid(urlcode,i + 2,2)) : i = i + 3
Se bx <128 Ou bx> 191 Então u = 0: Sair para
u = u + (bx E 63) * 64 ^ (bcomprimento - posição)
Próximo
Se você> 0 Então finalstr = finalstr & ChrW (b1 + você)
Terminar se
Outro
b1 = bx * &h100: você = 0
bx = URLDecode_Hex(Mid(urlcode,i + 2,2))
Se bx > 0 Então
você = b1 + bx
eu = eu + 3
Outro
Se Esquerda(urlcode,1) =% Então
você = b1 + Asc(Mid(urlcode,i + 3,1))
eu = eu + 2
Outro
você = b1 + Asc(Mid(urlcode,i + 1,1))
eu = eu + 1
Terminar se
Terminar se
finalstr = finalstr & Chr(u)
Terminar se
Outro
passar = 0
Terminar se
Terminar se
Outro
finalstr = finalstr & char
Terminar se
Próximo
URLDecode = leftstr & finalstr & rightstr
Função final
Função URLDecode_Hex(ByVal h)
Em caso de erro, retomar o próximo
h = &h & Trim(h): URLDecode_Hex = -1
Se Len (h) <> 4, então saia da função
Se isNumeric(h) Então URLDecode_Hex = cInt(h)
Função final
%>