读书人

怎么转换网址参数乱码的转换

发布时间: 2012-02-28 13:06:35 作者: rapoo

如何转换网址参数乱码的转换
如:http://www.hanchangjixie.com/tag.asp?k=%E6%8A%9B%E4%B8%B8%E6%9C%BA 关键字K收到的信息是:父? 怎么才能转换成正常的 本页设置状态是:


<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">


[解决办法]
这个不单是本页的编码模式

而是关联的页面都要统一编码模式额


[解决办法]

VBScript code
我们在百度中搜索 脚本之家,则网址后面的参数就是  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  %>文章来自中国建站:http://www.jz123.cn/text/2830867.html 

读书人网 >ASP

热点推荐