ASP中文URL解碼URLDecode函式實現
阿新 • • 發佈:2018-12-10
大家都知道,在asp中,我們一般都通過 Server.UrlEncode 進行url的編碼,這樣使得一些特殊的字元能夠通過連結正常訪問,但當我們把這個編碼後的url字元存入資料庫後,有些時候需要程式讀取這個url進行處理時,就需要對其進行url解碼,在php中這些功能很完善,但asp中,我們是找不到Server.UrlDecode函式的,鑑於這個問題,我們就要自己寫一個解碼函數了,以下是一段支援中文URLDecode的Asp函式,可以基於這個函式將其寫成一個類,呵呵,這裡就不細說了。
<% function URLDecode(strIn) URLDecode = "" Dim sl: sl = 1 Dim tl: tl = 1 Dim key: key = "%" Dim kl: kl = Len(key) sl = InStr(sl, strIn, key, 1) Do While sl>0 If (tl=1 And sl<>1) Or tl<sl Then URLDecode = URLDecode & Mid(strIn, tl, sl-tl) End If Dim hh, hi, hl Dim a Select Case UCase(Mid(strIn, sl+kl, 1)) Case "U": 'Unicode URLEncode a = Mid(strIn, sl+kl+1, 4) URLDecode = URLDecode & ChrW("&H" & a) sl = sl + 6 Case "E": 'UTF-8 URLEncode hh = Mid(strIn, sl+kl, 2) a = Int("&H" & hh) 'ascii碼 If Abs(a)<128 Then sl = sl + 3 URLDecode = URLDecode & Chr(a) Else hi = Mid(strIn, sl+3+kl, 2) hl = Mid(strIn, sl+6+kl, 2) a = ("&H" & hh And &H0F) * 2 ^12 Or ("&H" & hi And &H3F) * 2 ^ 6 Or ("&H" & hl And &H3F) If a<0 Then a = a + 65536 URLDecode = URLDecode & ChrW(a) sl = sl + 9 End If Case Else: 'Asc URLEncode hh = Mid(strIn, sl+kl, 2) '高位 a = Int("&H" & hh) 'ascii碼 If Abs(a)<128 Then sl = sl + 3 Else hi = Mid(strIn, sl+3+kl, 2) '低位 a = Int("&H" & hh & hi) '非ascii碼 sl = sl + 6 End If URLDecode = URLDecode & Chr(a) End Select tl = sl sl = InStr(sl, strIn, key, 1) Loop URLDecode = URLDecode & Mid(strIn, tl) End function %>