在查询字符串中加号

本文关键字:字符串 查询 | 更新日期: 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)。试试这个:

http://www.google.com/search?q=%41

希望这使得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(" ", "+");