当前位置: 首页 > 编程笔记 >

ASP中只有UrlEncode,没有Urldecode问题的解决方法?

魏朗
2023-03-14
本文向大家介绍ASP中只有UrlEncode,没有Urldecode问题的解决方法?,包括了ASP中只有UrlEncode,没有Urldecode问题的解决方法?的使用技巧和注意事项,需要的朋友参考一下

在ASP中传递参数时有一个很有用的系统函数Server.UrlEncode,可以将一些非字母数字的特殊符号转换成标准URL编码(其实就是16进制ASC码),这样就解决了参数传递问题,然后我以为也提供了Server.UrlDecode,但使用后却发现程序报错,原来系统并没有提供这个我想象中的解码函数。怎幺办,自己动手吧。

UrlEncode的原理其实很简单,就是将特殊字符转换成16进制ASC码值,那么译码函数就只要将16进制ASC转回对应的字符就OK了。

Function URLDecode(enStr)          'URL解碼函數 
 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

经测试gb312格式的asp使用没有问题。

 类似资料:
  • 本文向大家介绍ASP中实现的URLEncode、URLDecode自定义函数,包括了ASP中实现的URLEncode、URLDecode自定义函数的使用技巧和注意事项,需要的朋友参考一下 在做ajax中的post时,发现在服务器端取得数据时总是乱码,网上看了些解决方法也搞不定,我post过去时是xml形式,由于乱码服务器端xml也解析不了或出错。于是在post前先把它编码,到服务器端再解码,这样问

  • 从操作系统概念 5.8.2使用显示器的餐饮哲学家解决方案 接下来,我们通过对用餐哲学家问题提出一个无死锁的解决方案来说明监控概念。这个解决方案施加了一个限制,即哲学家只有在筷子都可用的情况下才能拿起筷子。为了给这个解决方案编码,我们需要区分我们可能找到哲学家的三种状态。为此,我们引入以下数据结构: 哲学家只有当她的两个邻居不吃饭时,我才能设置变量

  • 本文向大家介绍解决Python2.7中IDLE启动没有反应的问题,包括了解决Python2.7中IDLE启动没有反应的问题的使用技巧和注意事项,需要的朋友参考一下 安装Python2.7后,它自带一个编辑器IDLE,但是使用几次之后出现启动不了的情况,可做如下操作。 Windows操作系统下,使用快捷键 win+R 启动“运行”对话框,输入下面的路径,点击确定。 进入该目录后,删除该文件夹下的所有

  • 本文向大家介绍解决Pycharm 运行后没有输出的问题,包括了解决Pycharm 运行后没有输出的问题的使用技巧和注意事项,需要的朋友参考一下 在用Pycharm运行项目时,不知道干了什么,导致运行后无法像平时那样显示输出结果: 最后试了很多种方法,终于解决了: 将打勾的地方去掉,不要运行时用Python console。 补充:pycharm运行正确但是不出结果 描述: 之前用的好好的,突然有一

  • 因此,我打算让数据库将布尔值表示为“y”或“n”,而不是true或false--并尝试将这些值映射到我在网格中手工创建的复选框。 到目前为止,我已经能够在网格中呈现复选框,并通过手工呈现它们来正确地显示为选中或不选中... 但是,当用户单击save时,我在试图将值保存回数据库时遇到了困难。 提前谢谢你,蒂姆

  • 本文向大家介绍关于IDEA git 只有Commit没有Push的问题,包括了关于IDEA git 只有Commit没有Push的问题的使用技巧和注意事项,需要的朋友参考一下 最近发现一个问题,是关于IDEA的一些骚操作的事儿~ 具体怎么回事,一起来看看。 我们都知道使用git分布式版本控制工具,提、拉 代码都会有一个本地暂存区,也就是本地仓。 这也就说我们的Commit提交到的是我们的本地仓库,