加login查询string
我有一个使用C#和asp.net创build的webapp。 我用加号(+)在查询string中放置了一个参数值。 但是加号消失了。
如何在查询string中包含加号(+)而不消失?
请指教。
谢谢。
编辑:添加与UrlEncode代码
string str = Server.UrlEncode(Requery.QueryString["new"]);
+
符号在查询string中具有语义含义。 它用来表示空间。 查询string中具有语义重要性的另一个字符是&
,用于分隔查询string中的各个var=value
对。
大多数服务器端脚本会在使用它们之前解码查询参数,以便将a +
正确转换为空格。 现在,如果您希望在查询string中出现文字+
,则需要指定%2B
。
+
login查询string被URL解码为空格。 查询string中的%2B
被URL解码为+符号。
看到区别
http://www.google.com/search?q=foo+bar
和
http://www.google.com/search?q=foo%2Bbar
在上面的示例中,Google的服务器脚本是URL解码查询参数,然后使用它们进行search。
URL编码只不过是%
符号,后面是特殊字符的hex代码。 例如,我们知道A
的hex代码是0x41(十进制:65)。 尝试这个:
http://www.google.com/search?q=%41
希望这使得URL编码清晰。
因此,如果您希望+
JavaScript标记在查询参数中带有+
符号的URL获取时被保留,并且服务器端脚本将在URL解码之后处理查询参数,那么您应该对查询参数进行URL编码使用发出HTTP获取请求之前的URL,以便在请求到达服务器端脚本时,所有+
符号都转换为%2B
。 现在,当服务器端脚本URL解码查询string时,所有的%2B
都被转换回+
符号,这正是你想要的。
请参阅在JavaScript中编码URL? 学习如何使用JavaScript对参数进行URL编码。 从那里的讨论简短的回答:
var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);
你应该URLEncode你的查询string值,以确保任何特殊字符不会丢失。
看看HTML URL编码参考
你需要对+符号进行编码 – 它的值应该是%2B
我改变了我以前的陈述,所以没有人会感到困惑!
使用Server.UrlEncode创build您的url。 例如
string myUrl = "http://myurl?param1=" + Server.UrlEncode("my+param+1");
其他简单的方法是,假设我的URL是http://localhost/MyApp/Activate.aspx?ActivationCode=cHbtqH9P2dDZkx/mYUgFFo7nrNqSFgqdPisAzzu5/nwlEYDOHI+CQw==
Request.Url.ToString().Substring(Request.Url.ToString().IndexOf("=") + 1)
http://localhost/MyApp/Activate.aspx?ActivationCode=cHbtqH9P2dDZkx/mYUgFFo7nrNqSFgqdPisAzzu5/nwlEYDOHI+CQw==
在发送你参数之前,你需要检查参数是否包含加号,如果你需要replace为一个标志,例如:参数是:klasjdlkasd + djid3223你可以replace:klasjdlkasdFLAGdjid3223
当你转换,你需要更换angain
klasjdlkasd + djid3223
解决的办法是总是包含.Replace(“”,“+”),当你请求查询string
string s = Request.QueryString [“id”]。Trim()。Replace(“”,“+”);
来源: http : //www.webmasterworld.com/forum47/3238.htm
试试这个,对我有用:
Request.QueryString["new"].Trim();
在Decrypt Funcation中添加下面这行:
strText = strText.Replace(" ", "+");