URL参数传递字符串的处理

来源:http://it.oyksoft.com/post/387/

 

        要把一个字符串作为URL参数传递给另一个页面,必须要保证传递的字符串是正确的,能够被目标页面正确识别。
但由于URL传递时会造成某些冲突。比如,你要传递的字符串也是一个带有参数的URL,如http://www.oyksoft.com/a.asp?b=1&c=2&d=3,我要把这个URL字符串传递给http://www.oyksoft.com/e.asp,参数为url。如果不作任何处理,那么就是这样:
http://www.oyksoft.com/e.asp?url=http://www.oyksoft.com/a.asp?b=1&c=2&d=3
这样是很混乱的,它肯定会把c和d认为是传参,而url参数为http://www.oyksoft.com/a.asp?b=1
这样理解当然是错误的了。所以我们必须对原字符串进行重新编码。
在ASP和javascript里面,有escape和unescape可以解决问题。
 

引用
JavaScript中escape函数是对 String 对象编码以便它们能在所有计算机上可读,使用方法:

escape(charString)

charstring是必选项,参数是要编码的任意 String 对象或文字。

escape 方法返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。例如,空格返回的是 "%20" 。字符值大于 255 的以 %uxxxx 格式存储。

注意   escape 方法不能够用来对统一资源标示码 (URI) 进行编码。对其编码应使用 encodeURI 和encodeURIComponent 方法。

在实际的使用过程中,我发现这个函数对一个字符的处理是有可能导致问题的。这就是+。
如果在传递的参数中包含有+,那么用escape转换之后,+仍然是+。但是浏览器在 传递+时会把+看成是空格。unescape之后+也会变成空格。这个设计很奇怪。因此在参数用escape处理之后,我们需要还把+给全部替换成Unicode编码:%2B。
所以,我们可以在ASP中另设一函数:

  'url地址转换
  Private Function AddTrans(url)
  url=escape(url)
  url=replace(url,"+","%2B")
  AddTrans=url
  End Function


这样处理之后,参数中如果包含+字符在unescape之后还是+而不会变成空格。注意上面的函数,是在escape之后再替换+为%2B哦!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值