我有一个使用C#和asp.net创建的webapp。我用加号(+)在查询字符串中放置了一个参数值。但加号消失。加号查询字符串
如何在查询字符串中包含加号(+)而不会消失?
请指教。
谢谢。
编辑:添加的代码用urlencode
string str = Server.UrlEncode(Requery.QueryString["new"]);
我有一个使用C#和asp.net创建的webapp。我用加号(+)在查询字符串中放置了一个参数值。但加号消失。加号查询字符串
如何在查询字符串中包含加号(+)而不会消失?
请指教。
谢谢。
编辑:添加的代码用urlencode
string str = Server.UrlEncode(Requery.QueryString["new"]);
+
sign在查询字符串中具有语义含义。它用来表示空间。在查询字符串中具有语义重要性的另一个字符是&
,它用于分隔查询字符串中的各个var=value
对。
大多数服务器端脚本会在使用它们之前解码查询参数,以便+
正确转换为空格。现在,如果您希望在查询字符串中存在文字+
,则需要改为指定%2B
。
+
登录查询字符串是URL解码为空格。查询字符串中的%2B
被URL解码为+符号。
见
http://www.google.com/search?q=foo+bar
和
http://www.google.com/search?q=foo%2Bbar
在上面的例子之间的差别,谷歌的服务器脚本是用它们做搜索URL解码查询参数,然后。
URL编码只不过是%
符号后面跟着特殊字符的十六进制代码。例如,我们知道A
的十六进制代码是0x41(十进制:65)。试试这个:
http://www.google.com/search?q=%41
希望这是URL编码清晰。
因此,如果您希望+
符号在JavaScript查询参数中获取带有+
符号的URL时被保留,并且服务器端脚本将在URL解码之后处理查询参数,则应该使用URL编码在使用发出HTTP获取请求之前URL中的查询参数,以便当请求到达服务器端脚本时,所有+
标志被转换为%2B
。现在,当服务器端脚本URL解码查询字符串时,所有%2B
都会被转换回+
这是您想要的。
请参阅Encode URL in JavaScript?了解如何使用JavaScript对参数进行URL编码。从讨论中有简短的回答:
var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);
如何在JavaScript中将+符号替换为%2B。因为我在javascript中创建我的查询字符串。 – domlao
krakat,请参阅http://stackoverflow.com/q/332872/303363 –
你应该进行urlencode您的查询字符串值,以确保任何特殊字符不会丢失。
像这样,string str = Server.UrlEncode( Requery.QueryString [ “新”]); ? THanks – domlao
不完全是,您需要在将它们放入查询字符串之前对它们进行编码,而不是在将它们取出时。你如何设置查询字符串中的值?使用Javascript中的 – DoctorMick
,像$(“#btn”)。click(function(){var param =“C++”; ...}); – domlao
您需要编码+符号 - 它的价值应该是%2B
的解决方案是始终包括.Replace(”“ ,“+”)当您请求查询字符串
string s = Request.QueryString [“id”]。Trim()。Replace(“”,“+”);
试试这个,它为我工作:
Request.QueryString["new"].Trim();
其他简单的方法是,Request.Url.ToString().Substring(Request.Url.ToString().IndexOf("=") + 1)
假设我的网址,http://localhost/MyApp/Activate.aspx?ActivationCode=cHbtqH9P2dDZkx/mYUgFFo7nrNqSFgqdPisAzzu5/nwlEYDOHI+CQw==
在解密Funcation加入这一行:
strText = strText.Replace(" ", "+");
其他保留字符呢?这个解决方案只会解决+,而不是?等等 –
在发送给你之前ameter,你需要检查参数包含加号,如果有需要更换一个标志,例如: 的参数:klasjdlkasd + djid3223 可以更换:klasjdlkasdFLAGdjid3223
,当你去转换,你需要替换angain
klasjdlkasd + djid3223
您是否有密码? – tutts
其实值取决于用户输入。 – domlao
仅供参考'UrlBuilder',这似乎有点无用,这是我怎么偶然发现你的问题。看到http://stackoverflow.com/questions/24576239/why-doesnt-uribuilder-query-escaping-url-encoding-the-query-string – KCD