加号查询字符串

IT技术 c# javascript asp.net
2021-01-31 02:29:13

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

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

请指教。

谢谢。

编辑:使用 UrlEncode 添加代码

string str = Server.UrlEncode(Requery.QueryString["new"]);
6个回答

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

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

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

查看两者的区别

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 解码后处理查询参数,您应该对 URL 中的查询参数进行 URL 编码在使用发出 HTTP get 请求之前,以便在请求到达服务器端脚本时将所有+符号转换为%2B's。现在,当服务器端脚本对查询字符串进行 URL 解码时, all%2B将转换回+您想要的符号。

请参阅在 JavaScript 中编码 URL?了解如何使用 JavaScript 对参数进行 URL 编码。那里讨论的简短回答:

var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);
如何在 javascript 中将 + 号替换为 %2B。因为我在 javascript 中创建我的查询字符串。
2021-03-18 02:29:13

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

在 Javascript 中,例如 $("#btn").click(function(){ var param="c++"; ... });
2021-03-24 02:29:13
不完全是,您需要在将它们放入查询字符串之前对它们进行编码,而不是在将它们取出时进行编码。您如何设置查询字符串中的值?
2021-03-27 02:29:13
像这样, string str = Server.UrlEncode(Requery.QueryString["new"]); ? 谢谢
2021-04-04 02:29:13

HTML URL Encoding Reference

您需要对 + 号进行编码 - 它的值应该是 %2B

但是“+”表示 URL 中的空格。如果你想你需要对它进行编码和Javascript的方法escape()encodeURI()失败在这。
2021-04-05 02:29:13
+ 查询参数值中允许使用符号,不应对其进行编码,因为它已经对“空格”进行了编码
2021-04-09 02:29:13

我改变了我之前的陈述,所以没有人会感到困惑!

使用 Server.UrlEncode 创建您的 url。例如

string myUrl = "http://myurl?param1="  + Server.UrlEncode("my+param+1");
如果是用于 URL,则应进行 URL 编码,而不是Html 编码。他们不同的。
2021-03-19 02:29:13
我在 javascript 中添加了我的查询字符串,是否有任何可能的方法在 javascript 中对其进行编码?
2021-04-06 02:29:13

对于解决方案,我已申请:

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

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

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