VB实现Asp中的server.urlencode功能
作者:admin 日期:2012-05-20
VB版URLEncode
ASP/Visual Basic代码
- Private Function URLEncoding(vstrIn)
- strReturn = ""
- Dim i
- For i = 1 To Len(vstrIn)
- ThisChr = Mid(vstrIn, i, 1)
- If Abs(Asc(ThisChr)) < &HFF Then
- strReturn = strReturn & ThisChr
- Else
- innerCode = Asc(ThisChr)
- If innerCode < 0 Then
- innerCode = innerCode + &H10000
- End If
- Hight8 = (innerCode And &HFF00) \ &HFF
- Low8 = innerCode And &HFF
- strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
- End If
- Next
- strReturn = Replace(strReturn, Chr(32), "%20")
- URLEncoding = strReturn
- End Function
- '这个是根据HTML里面的ENSCAPE函数仿做的一个函数实现程序,将文字转换为16进制码表示的代码编码和解码方案
- Function ChangeToChar(CharAsc As Long)
- On Error GoTo OnError
- ChangeToChar = ChrW(CharAsc)
- Exit Function
- OnError:
- Exit Function
- End Function
- Function UnEnscape(enstr As String) As String
- Dim DataLen As Long
- Dim TempData As String
- Dim filepoint As Long
- Dim ChinaText As Long
- DataLen = Len(enstr)
- filepoint = 1
- Do While (filepoint <= DataLen)
- If Mid(enstr, filepoint, 1) = "%" Then
- If Mid(enstr, filepoint + 1, 1) = "u" Then
- On Error Resume Next
- ChinaText = CLng("&H" + Mid(enstr, filepoint + 2, 4))
- TempData = TempData + ChangeToChar(ChinaText)
- filepoint = filepoint + 6
- Else
- TempData = TempData + ChrW(CLng("&H" + Mid(enstr, filepoint + 1, 2)))
- filepoint = filepoint + 3
- End If
- Else
- TempData = TempData + Mid(enstr, filepoint, 1)
- filepoint = filepoint + 1
- End If
- Loop
- UnEnscape = TempData
- End Function
- Function Enscape(enstr As String) As String
- Dim OutPutStr As String
- Dim TmpStr As String
- Dim DataLen As Long
- TmpStr = ""
- DataLen = Len(enstr)
- Dim TempNum As Long
- For i = 1 To DataLen
- TempNum = AscW(Mid(enstr, i, 1))
- Debug.Print TempNum
- If TempNum < 16 And TempNum > 0 Then
- TmpStr = TmpStr + "%0" + Hex(TempNum)
- ElseIf 48 <= TempNum And TempNum <= 57 Then
- TmpStr = TmpStr + Mid(enstr, i, 1)
- ElseIf 65 <= TempNum And TempNum <= 90 Then
- TmpStr = TmpStr + Mid(enstr, i, 1)
- ElseIf 97 <= TempNum And TempNum <= 122 Then
- TmpStr = TmpStr + Mid(enstr, i, 1)
- ElseIf 16 <= TempNum And TempNum < 256 Then
- TmpStr = TmpStr + "%" + Hex(TempNum)
- ElseIf 4096 > TempNum And TempNum >= 256 Then
- If TempNum > 0 Then
- TmpStr = TmpStr + "%u0" + Hex(TempNum)
- Else
- TmpStr = TmpStr + "%u0" + Hex(CLng(&H10000) + TempNum)
- End If
- ElseIf Abs(TempNum) >= 4096 Then
- If TempNum > 0 Then
- TmpStr = TmpStr + "%u" + Hex(TempNum)
- Else
- TmpStr = TmpStr + "%u" + Hex(CLng(&H10000) + TempNum)
- End If
- End If
- Next
- Enscape = TmpStr
- End Function
转载自:http://www.cnblogs.com/xxaxx/archive/2009/12/29/1635300.html
评论: 0 | 引用: 0 | 查看次数: 2191
发表评论
广告位