加入查询字符串

我用 C # 和 asp.net 创建了一个 webapp。我在 querystring 中放置了一个带有加号(+)的参数值。但是加号消失了。

如何在查询字符串中包含加号(+)而不消失?

请指示。

谢谢。

编辑: 使用 UrlEncode 添加代码

string str = Server.UrlEncode(Requery.QueryString["new"]);
125727 次浏览

您应该对查询字符串值进行 URLEncode,以确保不会丢失任何特殊字符。

我修改了之前的陈述,这样就没人会搞混了!

使用 Server.UrlEncode 创建网址。 例如:。

string myUrl = "http://myurl?param1="  + Server.UrlEncode("my+param+1");

+符号在查询字符串中具有语义意义。它用于表示空间。在查询字符串中具有语义重要性的另一个字符是 &,它用于分隔查询字符串中的各种 var=value对。

大多数服务器端脚本在使用查询参数之前会对它们进行解码,以便将 +正确地转换为空格。现在,如果希望查询字符串中出现一个字面 +,则需要指定 %2B

查询字符串中的 +符号被 URL 解码为一个空格。查询字符串中的 %2B被 URL 解码为 + 符号。

See the difference between

Http://www.google.com/search?q=foo+bar

还有

Http://www.google.com/search?q=foo%2bbar

在上面的例子中,Google 的服务器脚本是 URL ——对查询参数进行解码,然后使用它们进行搜索。

URL 编码就是 %符号后面跟着特殊字符的十六进制代码。例如,我们知道 A的十六进制代码是0x41(十进制: 65)。试试这个:

Http://www.google.com/search?q=%41

希望这能让 URL 编码更加清晰。

因此,如果你希望当一个 JavaScript 在其查询参数中获取一个带有 +标志的 URL 时,并且一个服务器端脚本将在 URL 解码后处理该查询参数时,+标志能够被保留,你应该在发出 HTTP get 请求之前对 URL 中的查询参数进行 URL 编码,这样当请求到达服务器端脚本时,所有的 +标志都会被转换成 %2B标志。现在,当服务器端脚本 URL 解码查询字符串时,所有的 %2B都会被转换回 +符号,这正是您想要的。

参见 用 JavaScript 编码 URL? ?了解如何使用 JavaScript 对参数进行 URL 编码:

var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);

看看 HTML URL 编码参考

You need to Encode the + sign - It's value should be %2B

解决方案是在请求 querystring 时使用 ALWAYS include. Replace (“”,“ +”)

String s = Request.QueryString [“ id”] . Trim () . Replace (“”,“ +”) ;

来源: http://www.webmasterworld.com/forum47/3238.htm

试试这个,对我很有效:

Request.QueryString["new"].Trim();

Other simple way is, Request.Url.ToString().Substring(Request.Url.ToString().IndexOf("=") + 1) assuming that my URL is, http://localhost/MyApp/Activate.aspx?ActivationCode=cHbtqH9P2dDZkx/mYUgFFo7nrNqSFgqdPisAzzu5/nwlEYDOHI+CQw==

Add this line in Decrypt Funcation:

strText = strText.Replace(" ", "+");

在发送参数之前,您需要检查参数是否包含加号,是否需要替换为一个标志,例如: the parameter is: klasjdlkasd+djid3223 你能替换: klasjdlkasdFLAGdjid3223

当你改变信仰的时候,你需要替换安加

Klasjdlkasd + djid3223

为了解决这个问题,我申请了:

步骤1: 使用 Server.UrlEncode方法编码 URL 参数。 Response.Redirect("YourURL?parameter=Server.UrlEncode(parameterValue.ToString().Trim()");

步骤2: 在另一边,您得到一个带有加号(+)的字符串。 var parameter = Request.QueryString["parameterValue"].ToString().Trim();

这就是结果: %2beH8 --> +eH8