VB版URLEncode

  1 Private Function URLEncoding(vstrIn)
  2 strReturn = ""
  3     Dim i
  4 For i = 1 To Len(vstrIn)
  5 ThisChr = Mid(vstrIn, i, 1)
  6 If Abs(Asc(ThisChr)) < &HFF Then
  7 strReturn = strReturn & ThisChr
  8 Else
  9 innerCode = Asc(ThisChr)
 10 If innerCode < 0 Then
 11 innerCode = innerCode + &H10000
 12 End If
 13 Hight8 = (innerCode And &HFF00) \ &HFF
 14 Low8 = innerCode And &HFF
 15 strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
 16 End If
 17 Next
 18 strReturn = Replace(strReturn, Chr(32), "%20")
 19 URLEncoding = strReturn
 20 End Function
 21 
 22 '这个是根据HTML里面的ENSCAPE函数仿做的一个函数实现程序,将文字转换为16进制码表示的代码编码和解码方案
 23 
 24 Function ChangeToChar(CharAsc As Long)
 25 On Error GoTo OnError
 26        ChangeToChar = ChrW(CharAsc)
 27        Exit Function
 28 OnError:
 29        Exit Function
 30 End Function
 31 
 32 Function UnEnscape(enstr As StringAs String
 33 Dim DataLen As Long
 34 Dim TempData As String
 35 Dim filepoint As Long
 36 Dim ChinaText As Long
 37 DataLen = Len(enstr)
 38 filepoint = 1
 39 Do While (filepoint <= DataLen)
 40     If Mid(enstr, filepoint, 1= "%" Then
 41        If Mid(enstr, filepoint + 11= "u" Then
 42        On Error Resume Next
 43        ChinaText = CLng("&H" + Mid(enstr, filepoint + 24))
 44        TempData = TempData + ChangeToChar(ChinaText)
 45        filepoint = filepoint + 6
 46        Else
 47        TempData = TempData + ChrW(CLng("&H" + Mid(enstr, filepoint + 12)))
 48        filepoint = filepoint + 3
 49        End If
 50      Else
 51        TempData = TempData + Mid(enstr, filepoint, 1)
 52        filepoint = filepoint + 1
 53     End If
 54 Loop
 55 UnEnscape = TempData
 56 End Function
 57 
 58 Function Enscape(enstr As StringAs String
 59 Dim OutPutStr As String
 60 Dim TmpStr As String
 61 Dim DataLen As Long
 62 TmpStr = ""
 63 DataLen = Len(enstr)
 64 Dim TempNum As Long
 65 For i = 1 To DataLen
 66 TempNum = AscW(Mid(enstr, i, 1))
 67    Debug.Print TempNum
 68    If TempNum < 16 And TempNum > 0 Then
 69       TmpStr = TmpStr + "%0" + Hex(TempNum)
 70    
 71    ElseIf 48 <= TempNum And TempNum <= 57 Then
 72       
 73       TmpStr = TmpStr + Mid(enstr, i, 1)
 74       
 75     ElseIf 65 <= TempNum And TempNum <= 90 Then
 76       
 77       TmpStr = TmpStr + Mid(enstr, i, 1)
 78       
 79     ElseIf 97 <= TempNum And TempNum <= 122 Then
 80       
 81       TmpStr = TmpStr + Mid(enstr, i, 1)
 82       
 83    
 84     ElseIf 16 <= TempNum And TempNum < 256 Then
 85       TmpStr = TmpStr + "%" + Hex(TempNum)
 86 
 87     ElseIf 4096 > TempNum And TempNum >= 256 Then
 88             If TempNum > 0 Then
 89       TmpStr = TmpStr + "%u0" + Hex(TempNum)
 90       Else
 91       TmpStr = TmpStr + "%u0" + Hex(CLng(&H10000) + TempNum)
 92       End If
 93     ElseIf Abs(TempNum) >= 4096 Then
 94       If TempNum > 0 Then
 95       TmpStr = TmpStr + "%u" + Hex(TempNum)
 96       Else
 97       TmpStr = TmpStr + "%u" + Hex(CLng(&H10000) + TempNum)
 98       End If
 99       
100     End If
101 
102 Next
103 Enscape = TmpStr
104 End Function
105 
原文地址:https://www.cnblogs.com/xxaxx/p/1635300.html