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 String) As 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 + 1, 1) = "u" Then
42 On Error Resume Next
43 ChinaText = CLng("&H" + Mid(enstr, filepoint + 2, 4))
44 TempData = TempData + ChangeToChar(ChinaText)
45 filepoint = filepoint + 6
46 Else
47 TempData = TempData + ChrW(CLng("&H" + Mid(enstr, filepoint + 1, 2)))
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 String) As 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
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 String) As 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 + 1, 1) = "u" Then
42 On Error Resume Next
43 ChinaText = CLng("&H" + Mid(enstr, filepoint + 2, 4))
44 TempData = TempData + ChangeToChar(ChinaText)
45 filepoint = filepoint + 6
46 Else
47 TempData = TempData + ChrW(CLng("&H" + Mid(enstr, filepoint + 1, 2)))
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 String) As 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