'&安培;'字符中断查询字符串

时间:2012-10-22 12:57:30

标签: c# .net query-string special-characters

我有一个页面正在根据查询字符串的值执行某些操作。但是我最近注意到,当查询字符串包含'&'时,这会中断字符。

我知道我可以写一些代码来翻译'&'在父页面上的字符,但我必须相信有更好的方法来做到这一点。

这是一个例子: 查询字符串:Exercise Science&体育研究 这只会返回'运动科学'

以下是我必须获取字符串的代码:

string selectedDept = Request.QueryString [ "dept" ];

我不想加密网址,因为网页有时会直接链接。

5 个答案:

答案 0 :(得分:4)

您不需要加密,您需要在生成Url之前对字符串进行编码。

如果您使用的是MVC,可以使用:

var url = "dept=" + Url.Encode(strDept);

否则你也可以使用:

var url = "dept=" + HttpUtility.UrlEncode(strDept);

<强>更新

不幸的是,这会生成一个丑陋的网址:

dept=Exercise%20Science%20%26%20Sports%20Studies

答案 1 :(得分:1)

&符号(&)字符已定义以分隔请求参数,因此没有其他方法可以将其置于此类参数中而不是对其进行编码。

您无需加密参数,只需编码即可。这种情况的常见编码是所谓的URL encoding。这种编码的好处是普通的字母和数字保持不变;只有特殊字符用百分号序列编码。

答案 2 :(得分:1)

是的,&字符会破坏查询字符串。它用作元字符来分隔参数。如果您需要在查询参数中包含&字符,则必须将其编码为%26。在ASP.Net上,使用HttpUtility.UrlEncode方法执行此操作,在页面范围内调用Server对象。

答案 3 :(得分:0)

您应该对参数进行编码,例如: HttpUtility.UrlEncode(myUrl);

答案 4 :(得分:0)

&符号用于分隔参数。

您需要对参数进行URL编码。它们应该在Request.QueryString中自动解码。