Fungsi decoding URL, sederhana dan mudah dimengerti. Alasan utamanya adalah bahasa Mandarin asli telah dikodekan URL. Jika digunakan secara khusus, URL tersebut perlu dikembalikan ke bahasa Mandarin, sehingga diperlukan fungsi seperti itu. Misalnya:
Saat kami mencari Script Home di Baidu, parameter setelah URL adalah
http://www.baidu.com/s?cl=3&wd=%BD%C5%B1%BE%D6%AE%BC%D2
Jika kita ingin mengembalikan %BD%C5%B1%BE%D6%AE%BC%D2 ke bahasa Mandarin, cukup gunakan fungsi berikut.
<%
respon.tulis urldecode(http://www.baidu.com/s?cl=3&wd=%BD%C5%B1%BE%D6%AE%BC%D2)
' ====
'Nama fungsi: URLDecode
'Fungsi: pengodean URL
' ====
Fungsi URLDecode (kode url ByVal)
Redupkan awal,akhir,panjang,char,i,butf8,lulus
Redupkan str kiri, str kanan, str terakhir
Redupkan b0,b1,bx,blength,posisi,u,utf8
Pada Kesalahan Lanjutkan Berikutnya
b0 = Larik(192.224.240.248.252.254)
urlcode = Ganti(urlcode,+, )
lulus = 0
utf8 = -1
panjang = Len(kode url) : mulai = InStr(kode url,%) : final = InStrRev(kode url,%)
Jika start = 0 Atau panjang < 3 Maka URLDecode = urlcode : Keluar dari Fungsi
leftstr = Kiri(urlcode,mulai - 1) : righttr = Kanan(urlcode,panjang - 2 - final)
Untuk i = mulai sampai akhir
char = Tengah(kode url,i,1)
Jika char = %Lalu
bx = URLDecode_Hex(Tengah(kode url,i + 1,2))
Jika bx > 31 Dan bx < 128 Maka
saya = saya + 2
finalstr = finalstr & ChrW(bx)
LainJika bx > 127 Maka
saya = saya + 2
Jika utf8 < 0 Maka
butf8 = 1 : bpanjang = -1 : b1 = bx
Untuk posisi = 4 Sampai 0 Langkah -1
Jika b1 >= b0(posisi) Dan b1 < b0(posisi + 1) Maka
blength = posisi
Keluar Untuk
Akhiri Jika
Berikutnya
Jika blength > -1 Maka
Untuk posisi = 0 Untuk blength
b1 = URLDecode_Hex(Tengah(kode url,i + posisi * 3 + 2,2))
Jika b1 < 128 Atau b1 > 191 Maka butf8 = 0 : Keluar Untuk
Berikutnya
Kalau tidak
butf8 = 0
Akhiri Jika
Jika butf8 = 1 Dan blength = 0 Maka butf8 = -2
Jika butf8 > -1 Dan utf8 = -2 Maka i = start - 1 : finalstr = : pass = 1
utf8 = butf8
Akhiri Jika
Jika lulus = 0 Maka
Jika utf8 = 1 Maka
b1 = bx : u = 0 : panjang = -1
Untuk posisi = 4 Sampai 0 Langkah -1
Jika b1 >= b0(posisi) Dan b1 < b0(posisi + 1) Maka
blength = posisi
b1 = (b1 xOr b0(posisi)) * 64 ^ (posisi + 1)
Keluar Untuk
Akhiri Jika
Berikutnya
Jika blength > -1 Maka
Untuk posisi = 0 Untuk blength
bx = URLDecode_Hex(Tengah(kode url,i + 2,2)) : i = i + 3
Jika bx < 128 Atau bx > 191 Maka u = 0 : Keluar Untuk
u = u + (bx Dan 63) * 64^ (blength - posisi)
Berikutnya
Jika u > 0 Maka finalstr = finalstr & ChrW(b1 + u)
Akhiri Jika
Kalau tidak
b1 = bx * &h100 : kamu = 0
bx = URLDecode_Hex(Tengah(kode url,i + 2,2))
Jika bx > 0 Maka
kamu = b1 + bx
saya = saya + 3
Kalau tidak
Jika Kiri(kode url,1) = % Lalu
u = b1 + Asc(Tengah(kode url,i + 3,1))
saya = saya + 2
Kalau tidak
u = b1 + Asc(Tengah(kode url,i + 1,1))
saya = saya + 1
Akhiri Jika
Akhiri Jika
finalstr = finalstr & Chr(u)
Akhiri Jika
Kalau tidak
lulus = 0
Akhiri Jika
Akhiri Jika
Kalau tidak
finalstr = finalstr & karakter
Akhiri Jika
Berikutnya
URLDecode = str kiri & str terakhir & str kanan
Fungsi Akhir
Fungsi URLDecode_Hex(ByVal h)
Pada Kesalahan Lanjutkan Berikutnya
h = &h & Potong(h) : URLDecode_Hex = -1
Jika Len(h) <> 4 Kemudian Keluar dari Fungsi
Jika isNumeric(h) Maka URLDecode_Hex = cInt(h)
Fungsi Akhir
%>