我有一个使用C#和asp.net创建的webapp。我将参数值放在带有加号(+)的查询字符串中。但是加号消失了。
如何在查询字符串中包含加号(+)而不会消失?
请指教。
谢谢。
编辑:使用UrlEncode添加代码
string str = Server.UrlEncode(Requery.QueryString["new"]);
+符号在查询字符串中具有语义。它用来表示一个空间。在查询字符串中具有语义重要性的另一个字符&是用于分隔var=value查询字符串中的各个对。
+
&
var=value
大多数服务器端脚本会在使用查询参数之前对其进行解码,以便将a +正确转换为空格。现在,如果希望+在查询字符串中出现文字,则需要指定%2B。
%2B
+将查询字符串中的sign 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)。尝试这个:
%
A
http://www.google.com/search?q=%41
希望这可以清楚地进行URL编码。
因此,如果您希望在+JavaScript提取带有+查询参数的URL时保留该符号,并且服务器端脚本将在对URL进行解码后处理查询参数,则应在URL中对查询参数进行URL编码在使用发出HTTP get请求之前,以便当请求到达服务器端脚本时所有+符号都转换为%2B。现在,当服务器端脚本对查询字符串进行URL解码时,所有都%2B将转换回+您想要的符号。
看到用JavaScript编码URL吗?了解如何使用JavaScript对参数进行URL编码。那里的讨论的简短答案:
var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);