今天搞下这个,还真有点意思,跟大家分享一下我今天的实践过程。
我想获取URL里面的参数。 ধরুন,我的网址是这样的 .../*?id=123&name=xiaoming
,我想拿到这个 "id" 和 "name" 对应的值。
然后我就开始动手,用 *["id"]。 还真行!我试一下,直接就能输出 "123" 这个值,简单粗暴!
后来我又想,如果我要获取多个参数?比如上面那个网址,我既要 "id" 又要 "name",怎么办?
我试着这样写:
string id = *["id"];
string name = *["name"];
分别获取,然后分别处理,也挺方便的。
但是,我今天遇到一个坑。我发现如果 URL 里面的参数值,包含一些特殊符号,比如"+"号,它会被解析成空格。我一开始还纳闷,怎么数据对不上?后来调试半天,才发现这个"+"号变成空格,真是坑爹!
比如说,我传一个 .../*?id=abc+xyz
, 我用 *["id"] 获取到的值,竟然是 "abc xyz", 中间的 "+" 不见,变成空格!
然后我又试下,发现不仅仅"+"有问题,"%" 也会被转义。比如 "%3d",会被转义成 "="。所以大家用的时候要小心这些特殊符号!
我还发现一个有趣的地方,就是 Request 取数据的时候,好像是有顺序的。它会先从 QueryString 里面找,找不到再去 Form 里面找,才去 ServerVariables 里面找。今天我主要关注的是 QueryString,所以其他的我就没深入研究。
对,如果有人遇到中文乱码的问题,记得检查一下编码是不是UTF-8。我今天倒是没遇到乱码,一切顺利。
今天用 * 获取 URL 参数,感觉还是挺方便的,就是要注意特殊字符的转义问题。下次再遇到类似的需求,我就知道该怎么处理!