Nous savons que l'objet ASP Server possède une méthode URLEncode qui peut coder l'adresse, mais il n'existe pas de fonction de décodage correspondante. La fonction suivante peut décoder URLEncode. Le code suivant est extrait du système kesion. Il est en effet bon et prend en charge le format utf8.
Copiez le code comme suit :
'=================================================
'Nom de la fonction : URLDecode
'Fonction : décodage d'URL
'=================================================
Fonction URLDecode(ByVal urlcode)
Dim début, finale, longueur, char, i, butf8, pass
Dim gauche, droite, finale
Dim b0,b1,bx,blongueur,position,u,utf8
En cas d'erreur, reprendre ensuite
b0 = Tableau (192 224 240 248 252 254)
urlcode = Remplacer (urlcode,+, )
réussite = 0
utf8 = -1
longueur = Len(urlcode) : start = InStr(urlcode,%) : final = InStrRev(urlcode,%)
Si début = 0 Ou longueur < 3 Alors URLDecode = urlcode : Quitter la fonction
leftstr = Gauche(urlcode,start - 1) : rightstr = Right(urlcode,length - 2 - final)
Pour i = début à la fin
char = Milieu (urlcode,i,1)
Si char =% Alors
bx = URLDecode_Hex(Mid(urlcode,i + 1,2))
Si bx > 31 Et bx < 128 Alors
je = je + 2
chaîne finale = chaîne finale & ChrW (bx)
SinonSi bx > 127 Alors
je = je + 2
Si utf8 < 0 Alors
butf8 = 1 : blongueur = -1 : b1 = bx
Pour position = 4 à 0 Étape -1
Si b1 >= b0(position) Et b1 < b0(position + 1) Alors
longueur = position
Quitter pour
Fin si
Suivant
Si longueur > -1 Alors
Pour position = 0 À longueur
b1 = URLDecode_Hex(Mid(urlcode,i + position * 3 + 2,2))
Si b1 < 128 Ou b1 > 191 Alors butf8 = 0 : Sortie Pour
Suivant
Autre
maisf8 = 0
Fin si
Si butf8 = 1 Et blength = 0 Alors butf8 = -2
Si butf8 > -1 Et utf8 = -2 Alors i = start - 1 : finalstr = : pass = 1
utf8 = butf8
Fin si
Si réussite = 0 Alors
Si utf8 = 1 Alors
b1 = bx : u = 0 : blongueur = -1
Pour position = 4 à 0 Étape -1
Si b1 >= b0(position) Et b1 < b0(position + 1) Alors
longueur = position
b1 = (b1 xOu b0(position)) * 64 ^ (position + 1)
Quitter pour
Fin si
Suivant
Si longueur > -1 Alors
Pour position = 0 À longueur
bx = URLDecode_Hex(Mid(urlcode,i + 2,2)) : i = i + 3
Si bx < 128 Ou bx > 191 Alors u = 0 : Sortie Pour
u = u + (bx Et 63) * 64 ^ (blongueur - position)
Suivant
Si u > 0 Alors finalstr = finalstr & ChrW(b1 + u)
Fin si
Autre
b1 = bx * &h100 : u = 0
bx = URLDecode_Hex(Mid(urlcode,i + 2,2))
Si bx > 0 Alors
u = b1 + bx
je = je + 3
Autre
Si Gauche(urlcode,1) = % Alors
u = b1 + Asc(Mid(urlcode,i + 3,1))
je = je + 2
Autre
u = b1 + Asc(Mid(urlcode,i + 1,1))
je = je + 1
Fin si
Fin si
chaîne finale = chaîne finale & Chr(u)
Fin si
Autre
réussite = 0
Fin si
Fin si
Autre
finalstr = finalstr & char
Fin si
Suivant
URLDecode = chaîne gauche & chaîne finale & chaîne droite
Fonction de fin
Fonction URLDecode_Hex(ByVal h)
En cas d'erreur, reprendre ensuite
h = &h & Trim(h) : URLDecode_Hex = -1
Si Len(h) <> 4 Alors quittez la fonction
Si isNumeric(h) Alors URLDecode_Hex = cInt(h)
Fonction de fin