加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

ASP网络页面反编码函数的代码

发布时间:2023-06-10 13:13:52 所属栏目:Asp教程 来源:
导读:URL反编码函数,简单易懂。 主要是原来的中文进行了url编码,具体使用的时候需要还原成中文,就需要这样的函数。

例如:

我们在百度中搜索 脚本之家,则网址后面的参数就是

http://www.baidu.com/s?cl=3&wd
URL反编码函数,简单易懂。 主要是原来的中文进行了url编码,具体使用的时候需要还原成中文,就需要这样的函数。

例如:
 
我们在百度中搜索 脚本之家,则网址后面的参数就是
 
http://www.baidu.com/s?cl=3&wd=%BD%C5%B1%BE%D6%AE%BC%D2
 
如果我们想将%BD%C5%B1%BE%D6%AE%BC%D2还原为中文,使用下面的函数即可。
 
<%
 
response.write urldecode("http://www.baidu.com/s?cl=3&wd=%BD%C5%B1%BE%D6%AE%BC%D2")
 
'================================================
 
'函数名:URLDecode
 
'作 用:URL解码
 
'================================================
 
Function URLDecode(ByVal urlcode)
 
Dim start,final,length,char,i,butf8,pass
 
Dim leftstr,rightstr,finalstr
 
Dim b0,b1,bx,blength,position,u,utf8
 
On Error Resume Next
 
b0 = Array(192,224,240,248,252,254)
 
urlcode = Replace(urlcode,"+"," ")
 
pass = 0
 
utf8 = -1
 
length = Len(urlcode) : start = InStr(urlcode,"%") : final = InStrRev(urlcode,"%")
 
If start = 0 Or length < 3 Then URLDecode = urlcode : Exit Function
 
leftstr = Left(urlcode,start - 1) : rightstr = Right(urlcode,length - 2 - final)
 
For i = start To final
 
char = Mid(urlcode,i,1)
 
If char = "%" Then
 
bx = URLDecode_Hex(Mid(urlcode,i + 1,2))
 
If bx > 31 And bx < 128 Then
 
i = i + 2
 
finalstr = finalstr & ChrW(bx)
 
ElseIf bx > 127 Then
 
i = i + 2
 
If utf8 < 0 Then
 
butf8 = 1 : blength = -1 : b1 = bx
 
For position = 4 To 0 Step -1
 
If b1 >= b0(position) And b1 < b0(position + 1) Then
 
blength = position
 
Exit For
 
End If
 
Next
 
If blength > -1 Then
 
For position = 0 To blength
 
b1 = URLDecode_Hex(Mid(urlcode,i + position * 3 + 2,2))
 
If b1 < 128 Or b1 > 191 Then butf8 = 0 : Exit For
 
Next
 
Else
 
butf8 = 0
 
End If
 
If butf8 = 1 And blength = 0 Then butf8 = -2
 
If butf8 > -1 And utf8 = -2 Then i = start - 1 : finalstr = "" : pass = 1
 
utf8 = butf8
 
End If
 
If pass = 0 Then
 
If utf8 = 1 Then
 
b1 = bx : u = 0 : blength = -1
 
For position = 4 To 0 Step -1
 
If b1 >= b0(position) And b1 < b0(position + 1) Then
 
blength = position
 
b1 = (b1 xOr b0(position)) * 64 ^ (position + 1)
 
Exit For
 
End If
 
Next
 
If blength > -1 Then
 
For position = 0 To blength
 
bx = URLDecode_Hex(Mid(urlcode,i + 2,2)) : i = i + 3
 
If bx < 128 Or bx > 191 Then u = 0 : Exit For
 
u = u + (bx And 63) * 64 ^ (blength - position)
 
Next
 
If u > 0 Then finalstr = finalstr & ChrW(b1 + u)
 
End If
 
Else
 
b1 = bx * &h100 : u = 0
 
bx = URLDecode_Hex(Mid(urlcode,i + 2,2))
 
If bx > 0 Then
 
u = b1 + bx
 
i = i + 3
 
Else
 
If Left(urlcode,1) = "%" Then
 
u = b1 + Asc(Mid(urlcode,i + 3,1))
 
i = i + 2
 
Else
 
u = b1 + Asc(Mid(urlcode,i + 1,1))
 
i = i + 1
 
End If
 
End If
 
finalstr = finalstr & Chr(u)
 
End If
 
Else
 
pass = 0
 
End If
 
End If
 
Else
 
finalstr = finalstr & char
 
End If
 
Next
 
URLDecode = leftstr & finalstr & rightstr
 
End Function
 
Function URLDecode_Hex(ByVal h)
 
On Error Resume Next
 
h = "&h" & Trim(h) : URLDecode_Hex = -1
 
If Len(h) <> 4 Then Exit Function
 
If isNumeric(h) Then URLDecode_Hex = cInt(h)
 
End Function
 
%>
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章