وظيفة فك تشفير URL، بسيطة وسهلة الفهم. السبب الرئيسي هو أن اللغة الصينية الأصلية قد تم ترميزها بواسطة عنوان URL. وعندما يتم استخدامها على وجه التحديد، فإنها تحتاج إلى استعادتها إلى اللغة الصينية، لذلك هناك حاجة إلى مثل هذه الوظيفة. على سبيل المثال:
عندما نبحث عن Script Home في Baidu، تكون المعلمات بعد عنوان URL هي
http://www.baidu.com/s?cl=3&wd=%BD%C5%B1%BE%D6%AE%BC%D2
إذا أردنا استعادة %BD%C5%B1%BE%D6%AE%BC%D2 إلى اللغة الصينية، فما عليك سوى استخدام الوظيفة التالية.
<%
Response.write urldecode(http://www.baidu.com/s?cl=3&wd=%BD%C5%B1%BE%D6%AE%BC%D2)
"=======================================================================================
'اسم الوظيفة: 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)
وظيفة النهاية
%>