我有一个使用 C# 和 asp.net 创建的 webapp。我在查询字符串中放置了一个带有加号 (+) 的参数值。但是加号消失了。
如何在查询字符串中包含加号(+)而不消失?
请指教。
谢谢。
编辑:使用 UrlEncode 添加代码
string str = Server.UrlEncode(Requery.QueryString["new"]);
我有一个使用 C# 和 asp.net 创建的 webapp。我在查询字符串中放置了一个带有加号 (+) 的参数值。但是加号消失了。
如何在查询字符串中包含加号(+)而不消失?
请指教。
谢谢。
编辑:使用 UrlEncode 添加代码
string str = Server.UrlEncode(Requery.QueryString["new"]);
+
符号在查询字符串中具有语义含义。它用于表示一个空间。在查询字符串中具有语义重要性的另一个字符&
用于分隔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);
您应该对查询字符串值进行 URLEncode,以确保不会丢失任何特殊字符。
您需要对 + 号进行编码 - 它的值应该是 %2B
我改变了我之前的陈述,所以没有人会感到困惑!
使用 Server.UrlEncode 创建您的 url。例如
string myUrl = "http://myurl?param1=" + Server.UrlEncode("my+param+1");
对于解决方案,我已申请:
步骤1:使用Server.UrlEncode
方法对URL 参数进行编码。
Response.Redirect("YourURL?parameter=Server.UrlEncode(parameterValue.ToString().Trim()");
第 2 步:在另一边,您会得到一个带有加号 (+) 的字符串。
var parameter = Request.QueryString["parameterValue"].ToString().Trim();
这是结果: %2beH8 --> +eH8