نحن نعلم أن كائن ASP Server لديه طريقة URLEncode يمكنها تشفير العنوان، ولكن لا توجد وظيفة فك تشفير مقابلة. يمكن للوظيفة التالية فك تشفير URLEncode. الكود التالي مأخوذ من نظام kesion وهو جيد بالفعل ويدعم تنسيق utf8.
انسخ رمز الكود كما يلي:
"=======================================================================================
'اسم الوظيفة: URLDecode
'الوظيفة: فك تشفير URL
"=======================================================================================
وظيفة URLDecode (رمز URL ByVal)
بداية خافتة، نهائية، طول، شار، ط، بوتف8، تمرير
خافت اليسار، اليمين، Finalstr
خافت b0،b1،bx،blength،الموضع،u،utf8
على خطأ استئناف التالي
b0 = صفيف (192,224,240,248,252,254)
كود url = استبدال(urlcode,+,)
تمرير = 0
أوتف8 = -1
الطول = Len(urlcode) : البداية = InStr(urlcode,%) : النهائي = InStrRev(urlcode,%)
إذا كانت البداية = 0 أو الطول < 3، فإن URLDecode = urlcode: اخرج من الوظيفة
leftstr = Left(urlcode,start - 1) : rightstr = Right(urlcode,length - 2 - Final)
لأني = البداية إلى النهاية
شار = منتصف(urlcode,i,1)
إذا كان شار = %ثم
bx = URLDecode_Hex(Mid(urlcode,i + 1,2))
إذا ب س > 31 و ب س < 128 ثم
ط = ط + 2
Finalstr = Finalstr & ChrW(bx)
ElseIf بكس> 127 ثم
ط = ط + 2
إذا كان utf8 <0 ثم
Butf8 = 1 : b length = -1 : b1 = bx
للموضع = 4 إلى 0 الخطوة -1
إذا كان b1 >= b0(الموضع) وb1 < b0(الموضع + 1) إذن
blength = الموضع
الخروج ل
نهاية إذا
التالي
إذا blength> -1 ثم
للموضع = 0 إلى الطول
b1 = URLDecode_Hex(Mid(urlcode,i + location * 3 + 2,2))
إذا كان b1 < 128 أو b1 > 191، فإن Butf8 = 0: الخروج من أجل
التالي
آخر
بوتف8 = 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 : blength = -1
للموضع = 4 إلى 0 الخطوة -1
إذا كان b1 >= b0(الموضع) وb1 < b0(الموضع + 1) إذن
blength = الموضع
b1 = (b1 xأو b0(الموضع)) * 64 ^ (الموضع + 1)
الخروج ل
نهاية إذا
التالي
إذا blength> -1 ثم
للموضع = 0 إلى الطول
bx = URLDecode_Hex(Mid(urlcode,i + 2,2)) : i = i + 3
إذا كان bx < 128 أو bx > 191، فإن u = 0: الخروج من أجل
u = u + (bx و 63) * 64 ^ (bالطول - الموضع)
التالي
إذا u > 0 فإن Finalstr = Finalstr & ChrW(b1 + u)
نهاية إذا
آخر
b1 = bx * &h100 : u = 0
bx = URLDecode_Hex(Mid(urlcode,i + 2,2))
إذا ب س > 0 ثم
ش = ب1 + بx
ط = ط + 3
آخر
إذا Left(urlcode,1) = % إذن
u = b1 + Asc(Mid(urlcode,i + 3,1))
ط = ط + 2
آخر
u = b1 + Asc(Mid(urlcode,i + 1,1))
ط = ط + 1
نهاية إذا
نهاية إذا
Finalstr = Finalstr & مركز حقوق الإنسان (u)
نهاية إذا
آخر
تمرير = 0
نهاية إذا
نهاية إذا
آخر
Finalstr = Finalstr & char
نهاية إذا
التالي
URLDecode = leftstr & Finalstr & rightstr
وظيفة النهاية
وظيفة URLDecode_Hex(ByVal h)
على خطأ استئناف التالي
h = &h & Trim(h): URLDecode_Hex = -1
إذا كان Len(h) <> 4 ثم اخرج من الوظيفة
إذا كان Numeric(h) ثم URLDecode_Hex = cInt(h)
وظيفة النهاية