7

我在我的网络浏览器中输入以下网址,然后按 Enter。

http://localhost/website.aspx?paymentID=6++7d6CZRKY%3D&language=English

现在在我的代码中,当我执行 HttpContext.Current.Request.QueryString["paymentID"] 时,

我得到 6 7d6CZRKY=

但是当我做 HttpContext.Current.Request.QueryString.ToString() 我看到以下内容:

支付ID=6++7d6CZRKY%3D&语言=英文

我想提取用户在 Web 浏览器 URL 中输入的实际付款 ID。我不担心 url 是否被编码。因为我知道这里 %3D 和 + 符号同时发生了一件奇怪的事情!但我确实需要实际的 + 号。当我执行 HttpContext.Current.Request.QueryString [“paymentID”] 时,它以某种方式被解码到空间。

我只想提取用户输入的实际付款 ID。最好的方法是什么?

谢谢你。

4

3 回答 3

8

您需要先使用 URLEncode() 对 URL 进行编码。URL 中的+等于空格,因此需要编码为 %2b。

string paymentId = Server.UrlEncode("6++7d6CZRKY=");
// paymentId = 6%2b%2b7d6CZRKY%3d

现在

string result = Request.QueryString["paymentId"].ToString();
//result = 6++7d6CZRKY=

然而

string paymentId = Server.UrlEncode("6  7d6CZRKY=");
//paymentId looks like you want it, but the + is a space -- 6++7d6CZRKY%3d

string result = Request.QueryString["paymentId"].ToString();
//result = 6 7d6CZRKY=
于 2012-11-18T23:40:16.593 回答
2

这里有一些关于此的信息:加号登录查询字符串

但我想您也可以使用正则表达式从查询字符串中获取参数。像这样的东西:

string queryString = HttpContext.Current.Request.QueryString.ToString();
string paramPaymentID = Regex.Match(queryString, "paymentID=([^&]+)").Groups[1].Value;
于 2012-11-18T22:41:15.077 回答
1

我在查询字符串中发送了一个阿拉伯语文本

我的查询字符串中的阿拉伯语文本

当我重新筛选这个字符串时,它被编码了 在此处输入图像描述

Server.UrlDecode

 departmentName = Server.UrlDecode(departmentName);

它又回到了阿拉伯语 在此处输入图像描述

我希望这对你有帮助

于 2016-08-31T12:22:07.677 回答