找回密码
 会员注册
查看: 174|回复: 0

ASP中文URL解码URLDecode函数实现

[复制链接]

250

主题

1

回帖

819

积分

管理员

积分
819
发表于 2024-2-29 08:25:29 | 显示全部楼层 |阅读模式

大家都知道,在asp中,我们一般都通过 Server.UrlEncode 进行url的编码,这样使得一些特殊的字符能够通过链接正常访问,但当我们把这个编码后的url字符存入数据库后,有些时候需要程序读取这个url进行处理时,就需要对其进行url解码,在php中这些功能很完善,但asp中,我们是找不到Server.UrlDecode函数的,鉴于这个问题,我们就要自己写一个解码函数了,以下是一段支持中文URLDecode的Asp函数,可以基于这个函数将其写成一个类,呵呵,这里就不细说了。

  1. <%
  2. function URLDecode(strIn)
  3. URLDecode = ""
  4. Dim sl: sl = 1
  5. Dim tl: tl = 1
  6. Dim key: key = "%"
  7. Dim kl: kl = Len(key)
  8. sl = InStr(sl, strIn, key, 1)
  9. Do While sl>0
  10. If (tl=1 And sl<>1) Or tl<sl Then
  11. URLDecode = URLDecode & Mid(strIn, tl, sl-tl)
  12. End If
  13. Dim hh, hi, hl
  14. Dim a
  15. Select Case UCase(Mid(strIn, sl+kl, 1))
  16. Case "U": 'Unicode URLEncode
  17. a = Mid(strIn, sl+kl+1, 4)
  18. URLDecode = URLDecode & ChrW("&H" & a)
  19. sl = sl + 6
  20. Case "E": 'UTF-8 URLEncode
  21. hh = Mid(strIn, sl+kl, 2)
  22. a = Int("&H" & hh) 'ascii码
  23. If Abs(a)<128 Then
  24. sl = sl + 3
  25. URLDecode = URLDecode & Chr(a)
  26. Else
  27. hi = Mid(strIn, sl+3+kl, 2)
  28. hl = Mid(strIn, sl+6+kl, 2)
  29. a = ("&H" & hh And &H0F) * 2 ^12 Or ("&H" & hi And &H3F) * 2 ^ 6 Or ("&H" & hl And &H3F)
  30. If a<0 Then a = a + 65536
  31. URLDecode = URLDecode & ChrW(a)
  32. sl = sl + 9
  33. End If
  34. Case Else: 'Asc URLEncode
  35. hh = Mid(strIn, sl+kl, 2) '高位
  36. a = Int("&H" & hh) 'ascii码
  37. If Abs(a)<128 Then
  38. sl = sl + 3
  39. Else
  40. hi = Mid(strIn, sl+3+kl, 2) '低位
  41. a = Int("&H" & hh & hi) '非ascii码
  42. sl = sl + 6
  43. End If
  44. URLDecode = URLDecode & Chr(a)
  45. End Select
  46. tl = sl
  47. sl = InStr(sl, strIn, key, 1)
  48. Loop
  49. URLDecode = URLDecode & Mid(strIn, tl)
  50. End function
  51. %>
复制代码

转载自:https://www.awaimai.com/268.html


来源:https://blog.csdn.net/chlung/article/details/82756578
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-26 12:44 , Processed in 0.404206 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表