我用 C # 和 asp.net 创建了一个 webapp。我在 querystring 中放置了一个带有加号(+)的参数值。但是加号消失了。
如何在查询字符串中包含加号(+)而不消失?
请指示。
谢谢。
编辑: 使用 UrlEncode 添加代码
string str = Server.UrlEncode(Requery.QueryString["new"]);
您应该对查询字符串值进行 URLEncode,以确保不会丢失任何特殊字符。
我修改了之前的陈述,这样就没人会搞混了!
使用 Server.UrlEncode 创建网址。 例如:。
string myUrl = "http://myurl?param1=" + Server.UrlEncode("my+param+1");
+符号在查询字符串中具有语义意义。它用于表示空间。在查询字符串中具有语义重要性的另一个字符是 &,它用于分隔查询字符串中的各种 var=value对。
+
&
var=value
大多数服务器端脚本在使用查询参数之前会对它们进行解码,以便将 +正确地转换为空格。现在,如果希望查询字符串中出现一个字面 +,则需要指定 %2B。
%2B
查询字符串中的 +符号被 URL 解码为一个空格。查询字符串中的 %2B被 URL 解码为 + 符号。
See the difference between
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 解码后处理该查询参数时,+标志能够被保留,你应该在发出 HTTP get 请求之前对 URL 中的查询参数进行 URL 编码,这样当请求到达服务器端脚本时,所有的 +标志都会被转换成 %2B标志。现在,当服务器端脚本 URL 解码查询字符串时,所有的 %2B都会被转换回 +符号,这正是您想要的。
参见 用 JavaScript 编码 URL? ?了解如何使用 JavaScript 对参数进行 URL 编码:
var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);
看看 HTML URL 编码参考
You need to Encode the + sign - It's value should be %2B
解决方案是在请求 querystring 时使用 ALWAYS include. Replace (“”,“ +”)
String s = Request.QueryString [“ id”] . Trim () . Replace (“”,“ +”) ;
来源: http://www.webmasterworld.com/forum47/3238.htm
试试这个,对我很有效:
Request.QueryString["new"].Trim();
Other simple way is, Request.Url.ToString().Substring(Request.Url.ToString().IndexOf("=") + 1) assuming that my URL is, 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==
Add this line in Decrypt Funcation:
strText = strText.Replace(" ", "+");
在发送参数之前,您需要检查参数是否包含加号,是否需要替换为一个标志,例如: the parameter is: klasjdlkasd+djid3223 你能替换: klasjdlkasdFLAGdjid3223
当你改变信仰的时候,你需要替换安加
Klasjdlkasd + djid3223
为了解决这个问题,我申请了:
步骤1: 使用 Server.UrlEncode方法编码 URL 参数。 Response.Redirect("YourURL?parameter=Server.UrlEncode(parameterValue.ToString().Trim()");
Server.UrlEncode
Response.Redirect("YourURL?parameter=Server.UrlEncode(parameterValue.ToString().Trim()");
步骤2: 在另一边,您得到一个带有加号(+)的字符串。 var parameter = Request.QueryString["parameterValue"].ToString().Trim();
var parameter = Request.QueryString["parameterValue"].ToString().Trim();
这就是结果: %2beH8 --> +eH8
%2beH8 --> +eH8