الآن:
إذا كانت هناك مسافات ، استخدم ٪ 20 بدلاً من ذلك ، إذا كانت هناك أحرف أخرى ، فاستخدم ٪ ASCII بدلاً من ذلك. إذا كان هناك أربعة أحرف بايت مثل الأحرف الصينية ، فاستخدم اثنين ٪ ASCII بدلاً من ذلك. ومع ذلك ، في بعض الأحيان نحتاج أيضًا إلى فك تشفير الأوتار المشفرة بهذه الطريقة ، لكن ASP لا توفر وظائف ذات صلة ، مما يسبب لنا بعض المتاعب عند التعامل مع المشكلة. في الواقع ، طالما أننا نعرف قواعد الترميز ، يمكننا استخدام رمز ASP لتنفيذ وظيفة urldecode الخاصة بنا.
التنفيذ المحدد هو كما يلي:
نسخة الكود كما يلي:
POSTRICTURLDECODE (ENCODESTR)
newsstr = ""
Havechar = خطأ
Lastchar = ""
fori = 1tolen (encodester)
char_c = mid (encodester ، i ، 1)
ifchar_c = "+" ثم
newsstr = newstr & ""
elseifchar_c = "٪" ثم
next_1_c = mid (encodester ، i+1،2)
next_1_num = cint ("& h" & next_1_c)
ifhavecharthen
Havechar = خطأ
newsstr = newstr & chr (cint ("& h" & lastchar & next_1_c))
آخر
IFABS (next_1_num) <= 127then
newsstr = newstr & chr (next_1_num)
آخر
Havechar = صحيح
Lastchar = next_1_c
Endif
Endif
i = i+2
آخر
newsstr = newstr & char_c
Endif
التالي
urldecode = newstr
الوظيفية
هذه وظيفة أكثر نضجا لك:
نسخة الكود كما يلي:
'================================================================
اسم الوظيفة: urldecode
الوظيفة: فك تشفير URL
'================================================================
دالة urldecode (Byval urlcode)
بداية خافتة ، نهائية ، طول ، شار ، أنا ، بوتف8 ، تمر
Dim Leftstr ، حقوق ، نهائيات
DIM B0 ، B1 ، BX ، BLENGTH ، الموضع ، U ، UTF8
عند استئناف الخطأ التالي
B0 = Array (192،224،240،248،252،254)
urlcode = استبدال (urlcode ، "+" ، "")
تمرير = 0
UTF8 = -1
الطول = len (urlCode): start = instr (urlcode ، "٪"): Final = Instrrev (urlcode ، "٪")
إذا ابدأ = 0 أو طول <3 ثم urldecode = urlCode: وظيفة الخروج
LeftStr = يسار (urlcode ، ابدأ - 1): حقوق = يمين (urlcode ، الطول - 2 - نهائي)
لأني = أبدأ في النهائي
char = mid (urlcode ، i ، 1)
إذا char = "٪" ثم
bx = urldecode_hex (mid (urlcode ، i + 1،2))
إذا bx> 31 و bx <128 ثم
i = i + 2
نهائيات = نهائيات وكرو (BX)
elseif bx> 127 ثم
i = i + 2
إذا UTF8 <0 ثم
butf8 = 1: blenge = -1: b1 = bx
للموضع = 4 إلى 0 خطوة -1
إذا B1> = B0 (الموضع) و B1 <B0 (الموضع + 1) ثم
ناعم = الموضع
الخروج ل
إنهاء إذا
التالي
إذا بلط> -1 ثم
للموضع = 0 إلى النطق
B1 = urldecode_hex (Mid (urlcode ، i + position * 3 + 2،2))
إذا كان B1 <128 أو B1> 191 ثم BUTF8 = 0: الخروج من أجل
التالي
آخر
butf8 = 0
إنهاء إذا
إذا butf8 = 1 و blenge = 0 ثم butf8 = -2
إذا butf8> -1 و utf8 = -2 ثم i = start -1: FinalStr = "": pass = 1