request.querystring详解,各种疑难问题看这里!

吉云

今天搞下这个,还真有点意思,跟大家分享一下我今天的实践过程。

我想获取URL里面的参数。 ধরুন,我的网址是这样的 .../*?id=123&name=xiaoming,我想拿到这个 "id" 和 "name" 对应的值。

然后我就开始动手,用 *["id"]。 还真行!我试一下,直接就能输出 "123" 这个值,简单粗暴!

request.querystring详解,各种疑难问题看这里!

后来我又想,如果我要获取多个参数?比如上面那个网址,我既要 "id" 又要 "name",怎么办?

我试着这样写:

  • string id = *["id"];
  • string name = *["name"];

request.querystring详解,各种疑难问题看这里!

分别获取,然后分别处理,也挺方便的。

但是,我今天遇到一个坑。我发现如果 URL 里面的参数值,包含一些特殊符号,比如"+"号,它会被解析成空格。我一开始还纳闷,怎么数据对不上?后来调试半天,才发现这个"+"号变成空格,真是坑爹!

比如说,我传一个 .../*?id=abc+xyz, 我用 *["id"] 获取到的值,竟然是 "abc xyz", 中间的 "+" 不见,变成空格!

然后我又试下,发现不仅仅"+"有问题,"%" 也会被转义。比如 "%3d",会被转义成 "="。所以大家用的时候要小心这些特殊符号!

我还发现一个有趣的地方,就是 Request 取数据的时候,好像是有顺序的。它会先从 QueryString 里面找,找不到再去 Form 里面找,才去 ServerVariables 里面找。今天我主要关注的是 QueryString,所以其他的我就没深入研究。

对,如果有人遇到中文乱码的问题,记得检查一下编码是不是UTF-8。我今天倒是没遇到乱码,一切顺利。

request.querystring详解,各种疑难问题看这里!

今天用 * 获取 URL 参数,感觉还是挺方便的,就是要注意特殊字符的转义问题。下次再遇到类似的需求,我就知道该怎么处理!

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]