asfman
android developer
posts - 90,  comments - 213,  trackbacks - 0

asp 里面没有urldecode函数,好象aspx里有吧,我不太清楚,但asp里面还是用得很多。在网上查找了有别人写的urldecode函数,但是这个函数有错误,而且在一些方面写得比较难理解。而且有错误,当里面有生僻双字节文字时就会产生错误,如“乄”经urlencoder后为“%81W”,解码就不能成功。

 其实双字节编码在这里只要把"W"也编成16进制ASC码就可以。

 知识点:计算机里的cookie也是经过urlencode编码的,所以urldecode对破解cookie也很有用呵。

 下面是源代码:

 Function URLDecode(enStr)
 dim deStr
 dim c,i,v
 deStr=""
 for i=1 to len(enStr)
 c=Mid(enStr,i,1)
 if c="%" then
 v=eval("&h"+Mid(enStr,i+1,2))
 if v<128 then
 deStr=deStr&chr(v)
 i=i+2
 else
 if isvalidhex(mid(enstr,i,3)) then
 if isvalidhex(mid(enstr,i+3,3)) then
 v=eval("&h"+Mid(enStr,i+1,2)+Mid(enStr,i+4,2))
 deStr=deStr&chr(v)
 i=i+5
 else
 v=eval("&h"+Mid(enStr,i+1,2)+cstr(hex(asc(Mid(enStr,i+3,1)))))
 deStr=deStr&chr(v)
 i=i+3
 end if
 else
 destr=destr&c
 end if
 end if
 else
 if c="+" then
 deStr=deStr&" "
 else
 deStr=deStr&c
 end if
 end if
 next
 URLDecode=deStr
 end function

 function isvalidhex(str)
 isvalidhex=true
 str=ucase(str)
 if len(str)<>3 then isvalidhex=false:exit function
 if left(str,1)<>"%" then isvalidhex=false:exit function
 c=mid(str,2,1)
 if not (((c>="0") and (c<="9")) or ((c>="A") and (c<="Z"))) then isvalidhex=false:exit function
 c=mid(str,3,1)
 if not (((c>="0") and (c<="9")) or ((c>="A") and (c<="Z"))) then isvalidhex=false:exit function
 end function

 你用此方法解码“%81W”看看,可以了。

 当然,你还可以玩点小段,使之成为自己的一种字符串加密方式。

posted on 2006-10-09 10:46 汪杰 阅读(406) 评论(0)  编辑 收藏 引用 所属分类: ajax
只有注册用户登录后才能发表评论。

<2007年3月>
25262728123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

留言簿(15)

随笔分类(1)

随笔档案(90)

文章分类(727)

文章档案(712)

相册

收藏夹

http://blog.csdn.net/prodigynonsense

友情链接

最新随笔

搜索

  •  

积分与排名

  • 积分 - 457928
  • 排名 - 6

最新随笔

最新评论

阅读排行榜

评论排行榜