ASP的URLDecode函数URLEncode解码函数

ASP/Visual Basic代码
  1. Function URLDecode(ByVal urlcode)   
  2. Dim start,final,length,char,i,butf8,pass   
  3. Dim leftstr,rightstr,finalstr   
  4. Dim b0,b1,bx,blength,position,u,utf8   
  5. On Error Resume Next  
  6. b0 = Array(192,224,240,248,252,254)   
  7. urlcode = Replace(urlcode,"+"," ")   
  8. pass = 0   
  9. utf8 = -1  
  10. length = Len(urlcode) : start = InStr(urlcode,"%") : final = InStrRev(urlcode,"%")   
  11. If start = 0 Or length < 3 Then URLDecode = urlcode : Exit Function   
  12. leftstr = Left(urlcode,start - 1) : rightstr = Right(urlcode,length - 2 - final)  
  13. For i = start To final   
  14. char = Mid(urlcode,i,1)   
  15. If char = "%" Then   
  16. bx = URLDecode_Hex(Mid(urlcode,i + 1,2))   
  17. If bx > 31 And bx < 128 Then   
  18. i = i + 2   
  19. finalstr = finalstr & ChrW(bx)   
  20. ElseIf bx > 127 Then   
  21. i = i + 2   
  22. If utf8 < 0 Then   
  23. butf8 = 1 : blength = -1 : b1 = bx   
  24. For position = 4 To 0 Step -1   
  25. If b1 >= b0(position) And b1 < b0(position + 1) Then   
  26. blength = position   
  27. Exit For   
  28. End If   
  29. Next   
  30. If blength > -1 Then   
  31. For position = 0 To blength   
  32. b1 = URLDecode_Hex(Mid(urlcode,i + position * 3 + 2,2))   
  33. If b1 < 128 Or b1 > 191 Then butf8 = 0 : Exit For   
  34. Next   
  35. Else   
  36. butf8 = 0   
  37. End If   
  38. If butf8 = 1 And blength = 0 Then butf8 = -2   
  39. If butf8 > -1 And utf8 = -2 Then i = start - 1 : finalstr = "" : pass = 1   
  40. utf8 = butf8   
  41. End If   
  42. If pass = 0 Then   
  43. If utf8 = 1 Then   
  44. b1 = bx : u = 0 : blength = -1   
  45. For position = 4 To 0 Step -1   
  46. If b1 >= b0(position) And b1 < b0(position + 1) Then   
  47. blength = position   
  48. b1 = (b1 xOr b0(position)) * 64 ^ (position + 1)   
  49. Exit For   
  50. End If   
  51. Next   
  52. If blength > -1 Then   
  53. For position = 0 To blength   
  54. bx = URLDecode_Hex(Mid(urlcode,i + 2,2)) : i = i + 3   
  55. If bx < 128 Or bx > 191 Then u = 0 : Exit For   
  56. u = u + (bx And 63) * 64 ^ (blength - position)   
  57. Next   
  58. If u > 0 Then finalstr = finalstr & ChrW(b1 + u)   
  59. End If   
  60. Else   
  61. b1 = bx * &h100 : u = 0   
  62. bx = URLDecode_Hex(Mid(urlcode,i + 2,2))   
  63. If bx > 0 Then   
  64. u = b1 + bx   
  65. i = i + 3   
  66. Else   
  67. If Left(urlcode,1) = "%" Then   
  68. u = b1 + Asc(Mid(urlcode,i + 3,1))   
  69. i = i + 2   
  70. Else   
  71. u = b1 + Asc(Mid(urlcode,i + 1,1))   
  72. i = i + 1   
  73. End If   
  74. End If   
  75. finalstr = finalstr & Chr(u)   
  76. End If   
  77. Else   
  78. pass = 0   
  79. End If   
  80. End If   
  81. Else   
  82. finalstr = finalstr & char   
  83. End If   
  84. Next   
  85. URLDecode = leftstr & finalstr & rightstr   
  86. End Function  
  87. Function URLDecode_Hex(ByVal h)   
  88. On Error Resume Next   
  89. h = "&h" & Trim(h) : URLDecode_Hex = -1   
  90. If Len(h) <> 4 Then Exit Function   
  91. If isNumeric(h) Then URLDecode_Hex = cInt(h)   
  92. End Function  


上一篇: 北京联想调频科技有限公司
下一篇: 关于IIS7.0出错的解决方案
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: asp
相关日志:
评论: 0 | 引用: 0 | 查看次数: 3420
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭

 广告位

↑返回顶部↑