彰化一整天的論壇

 找回密碼
 立即註冊
查看: 627|回復: 0

Excel VBA 字符串继续url解码

[複製鏈接]
發表於 2016-6-20 08:59:34 | 顯示全部樓層 |閱讀模式


  1. Function URLDecode(ByVal strIn)

  2.     URLDecode = ""

  3.     Dim sl: sl = 1

  4.     Dim tl: tl = 1

  5.     Dim key: key = "%"

  6.     Dim kl: kl = Len(key)

  7.     sl = InStr(sl, strIn, key, 1)

  8.     Do While sl > 0

  9.         If (tl = 1 And sl <> 1) Or tl < sl Then

  10.             URLDecode = URLDecode & Mid(strIn, tl, sl - tl)

  11.         End If

  12.         Dim hh, hi, hl

  13.         Dim a

  14.         Select Case UCase(Mid(strIn, sl + kl, 1))

  15.             Case "U" 'Unicode URLEncode

  16.                 a = Mid(strIn, sl + kl + 1, 4)

  17.                 URLDecode = URLDecode & ChrW("&H" & a)

  18.                 sl = sl + 6

  19.             Case "E" 'UTF-8 URLEncode

  20.                 hh = Mid(strIn, sl + kl, 2)

  21.                 a = Int("&H" & hh) 'ascii码

  22.                 If Abs(a) < 128 Then

  23.                     sl = sl + 3

  24.                     URLDecode = URLDecode & Chr(a)

  25.                 Else

  26.                     hi = Mid(strIn, sl + 3 + kl, 2)

  27.                     hl = Mid(strIn, sl + 6 + kl, 2)

  28.                     a = ("&H" & hh And &HF) * 2 ^ 12 Or ("&H" & hi And &H3F) * 2 ^ 6 Or ("&H" & hl And &H3F)

  29.                     If a < 0 Then a = a + 65536

  30.                     URLDecode = URLDecode & ChrW(a)

  31.                     sl = sl + 9

  32.                 End If

  33.             Case Else 'Asc URLEncode

  34.                 hh = Mid(strIn, sl + kl, 2) '高位

  35.                 a = Int("&H" & hh) 'ascii码

  36.                 If Abs(a) < 128 Then

  37.                     sl = sl + 3

  38.                 Else

  39.                     hi = Mid(strIn, sl + 3 + kl, 2) '低位

  40.                     a = Int("&H" & hh & hi) '非ascii码

  41.                     sl = sl + 6

  42.                 End If

  43.                 URLDecode = URLDecode & Chr(a)

  44.         End Select

  45.         tl = sl

  46.         sl = InStr(sl, strIn, key, 1)

  47.     Loop

  48.     URLDecode = URLDecode & Mid(strIn, tl)

  49. End Function
複製代碼
資料來源: http://hcyahoo.lofter.com/post/1fc134_62558a3
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

 ㄚ母滴雞湯
 員林香純滴雞精

Archiver|手機版|小黑屋|彰化一整天的論壇(Excel,Office)  |网站地图

GMT+8, 2019-10-20 08:30 , Processed in 0.115846 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表