在查询字符串中加号
本文关键字:字符串 查询 | 更新日期: 2023-09-27 18:04:01
我有一个使用c#和asp.net创建的web应用程序。我在querystring中放置了一个带加号的参数值。但是加号不见了
如何在查询字符串中包含加号(+)而不消失?
请建议。
谢谢。
编辑:添加UrlEncode代码
string str = Server.UrlEncode(Requery.QueryString["new"]);
+
符号在查询字符串中具有语义含义。它用来表示一个空间。另一个在查询字符串中具有重要语义意义的字符是&
,它用于分隔查询字符串中的各种var=value
对。
大多数服务器端脚本在使用查询参数之前会解码查询参数,以便+
正确地转换为空格。现在,如果您希望在查询字符串中出现文字+
,则需要指定%2B
。
+
符号被url解码为一个空格。查询字符串中的%2B
被url解码为+号
查看
和 的区别http://www.google.com/search?q=foo +酒吧
和
http://www.google.com/search?q=foo%2Bbar在上面的例子中,Google的服务器脚本对查询参数进行url解码,然后使用它们进行搜索。
url编码只不过是%
符号后跟特殊字符的十六进制编码。例如,我们知道A
的十六进制代码是0x41(十进制:65)。试试这个:
希望这使得url编码清晰。
因此,如果您希望在JavaScript在其查询参数中获取具有+
符号的URL并且服务器端脚本将在URL解码后处理查询参数时保留+
符号,则应在使用发出HTTP get请求之前对URL中的查询参数进行URL编码,以便所有+
符号在请求到达服务器端脚本时转换为%2B
符号。现在,当服务器端脚本url解码查询字符串时,所有%2B
被转换回+
符号,这就是您想要的。
参见在JavaScript中编码URL ?学习如何使用JavaScript对参数进行url编码。这里的简短回答:
var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);
您应该URLEncode您的查询字符串值,以确保任何特殊字符不会丢失
查看HTML URL编码参考
你需要编码加号-它的值应该是%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
另一种简单的方法是,Request.Url.ToString().Substring(Request.Url.ToString().IndexOf("=") + 1)
假设我的URL是,http://localhost/MyApp/Activate.aspx?ActivationCode=cHbtqH9P2dDZkx/mYUgFFo7nrNqSFgqdPisAzzu5/nwlEYDOHI+CQw==
在发送参数之前,您需要检查参数是否包含加号,如果有则需要替换为一个标志,例如:参数为:klasjdlkasd+djid3223可以替换:klasjdlkasdFLAGdjid3223
转换时,需要重新替换
klasjdlkasd + djid3223
试试这个,它适用于我:
Request.QueryString["new"].Trim();
解决方案是在请求querystring
时始终包含.Replace(" ", "+")string s = Request.QueryString["id"]. trim()。Replace(" ", "+");
来源:http://www.webmasterworld.com/forum47/3238.htm
在解密函数中添加这一行:
strText = strText.Replace(" ", "+");