เรารู้ว่าวัตถุ ASP Server มีวิธี URLEncode ที่สามารถเข้ารหัสที่อยู่ได้ แต่ไม่มีฟังก์ชันการถอดรหัสที่สอดคล้องกัน ฟังก์ชันต่อไปนี้สามารถถอดรหัส URLEncode ได้ รหัสต่อไปนี้นำมาจากระบบ kesion เป็นสิ่งที่ดีจริงๆ และรองรับรูปแบบ utf8
คัดลอกรหัสรหัสดังต่อไปนี้:
-
'ชื่อฟังก์ชัน: URLDecode
'ฟังก์ชั่น: ถอดรหัส URL'
-
ฟังก์ชั่น URLDecode(ByVal urlcode)
เริ่มต้นติ่มซำ, สุดท้าย, ความยาว, ถ่าน, i, butf8, ผ่าน
หรี่ leftstr, rightstr, Finalstr
หรี่ b0,b1,bx,blength,ตำแหน่ง,u,utf8
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
b0 = อาร์เรย์(192,224,240,248,252,254)
urlcode = แทนที่ (urlcode,+, )
ผ่าน = 0
utf8 = -1
length = Len(urlcode) : start = InStr(urlcode,%) : สุดท้าย = InStrRev(urlcode,%)
ถ้า start = 0 หรือ length < 3 ดังนั้น URLDecode = urlcode : Exit Function
leftstr = ซ้าย (urlcode, เริ่ม - 1) : rightstr = ขวา (urlcode, ความยาว - 2 - สุดท้าย)
สำหรับ i = เริ่มต้นถึงขั้นสุดท้าย
ถ่าน = กลาง (รหัส URL, i,1)
ถ้าถ่าน = %แล้ว
bx = URLDecode_Hex(กลาง(urlcode,i + 1,2))
ถ้า bx > 31 และ bx < 128 แล้ว
ฉัน = ฉัน + 2
Finalstr = Finalstr & ChrW(bx)
ElseIf bx > 127 จากนั้น
ฉัน = ฉัน + 2
ถ้า utf8 < 0 แล้ว
butf8 = 1 : blength = -1 : b1 = bx
สำหรับตำแหน่ง = 4 ถึง 0 ขั้นตอน -1
ถ้า b1 >= b0(ตำแหน่ง) และ b1 < b0(ตำแหน่ง + 1) แล้ว
ความยาว = ตำแหน่ง
ออกเพื่อ
สิ้นสุดถ้า
ต่อไป
ถ้า blength > -1 แล้ว
สำหรับตำแหน่ง = 0 ถึง blength
b1 = URLDecode_Hex(กลาง(urlcode,i + ตำแหน่ง * 3 + 2,2))
ถ้า b1 < 128 หรือ b1 > 191 ดังนั้น butf8 = 0 : ออกเพื่อ
ต่อไป
อื่น
butf8 = 0
สิ้นสุดถ้า
ถ้า butf8 = 1 และ blength = 0 ดังนั้น butf8 = -2
ถ้า butf8 > -1 และ utf8 = -2 ดังนั้น i = start - 1 : Finalstr = : pass = 1
utf8 = butf8
สิ้นสุดถ้า
ถ้าผ่าน = 0 แล้ว
ถ้า utf8 = 1 แล้ว
b1 = bx : u = 0 : ความยาว = -1
สำหรับตำแหน่ง = 4 ถึง 0 ขั้นตอน -1
ถ้า b1 >= b0(ตำแหน่ง) และ b1 < b0(ตำแหน่ง + 1) แล้ว
ความยาว = ตำแหน่ง
b1 = (b1 xหรือ b0(ตำแหน่ง)) * 64 ^ (ตำแหน่ง + 1)
ออกเพื่อ
สิ้นสุดถ้า
ต่อไป
ถ้า blength > -1 แล้ว
สำหรับตำแหน่ง = 0 ถึง blength
bx = URLDecode_Hex(กลาง(รหัส URL,i + 2,2)) : i = i + 3
ถ้า bx < 128 หรือ bx > 191 ดังนั้น u = 0 : ออกเพื่อ
u = u + (bx และ 63) * 64 ^ (blength - ตำแหน่ง)
ต่อไป
ถ้าคุณ > 0 ดังนั้น Finalstr = Finalstr & ChrW(b1 + u)
สิ้นสุดถ้า
อื่น
b1 = bx * &h100 : u = 0
bx = URLDecode_Hex(กลาง(urlcode,i + 2,2))
ถ้า bx > 0 แล้ว
คุณ = b1 + bx
ฉัน = ฉัน + 3
อื่น
ถ้า Left(urlcode,1) = % แล้ว
u = b1 + Asc(กลาง(รหัส URL,i + 3,1))
ฉัน = ฉัน + 2
อื่น
u = b1 + Asc(กลาง(รหัส URL,i + 1,1))
ฉัน = ฉัน + 1
สิ้นสุดถ้า
สิ้นสุดถ้า
สุดท้ายstr = สุดท้ายstr & Chr(u)
สิ้นสุดถ้า
อื่น
ผ่าน = 0
สิ้นสุดถ้า
สิ้นสุดถ้า
อื่น
Finalstr = Finalstr & ถ่าน
สิ้นสุดถ้า
ต่อไป
URLDecode = leftstr & Finalstr & rightstr
ฟังก์ชันสิ้นสุด
ฟังก์ชัน URLDecode_Hex(ByVal h)
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
h = &h & ตัดแต่ง(h) : URLDecode_Hex = -1
ถ้า Len(h) <> 4 จากนั้นออกจากฟังก์ชัน
ถ้า isNumeric(h) ดังนั้น URLDecode_Hex = cInt(h)
ฟังก์ชันสิ้นสุด