使用NameValueCollection将QueryString转换为URL编码

3

我正在传递一个加密的URL字符串:

Default.aspx?S3tLlnIKKzE%3d

我希望将该URL字符串以变量的形式传回到ASPX页面中。

protected string qs = string.Empty;

NameValueCollection qscollstring = HttpContext.Current.Request.QueryString;
qs = qscollstring[0];

返回的结果是:S3tLlnIKKzE=

qscollstring[0]中的值是正确的:S3tLlnIKKzE%3d

我知道问题出在URL编码上,但我找不到保持字符串不变的方法。

似乎将qscollstring[0]中的值赋给字符串会改变其值:S3tLlnIKKzE%3d
变成了S3tLlnIKKzE=

我需要它保持为:S3tLlnIKKzE%3d

3个回答

4
使用 HttpUtility.UrlEncode 方法对字符串进行编码。
 qs =HttpUtility.UrlEncode(qscollstring[0]);

0

如果你正在寻找reverse,那么像我一样使用它

qs =HttpUtility.UrlDecode("S3tLlnIKKzE%3d");

获取返回S3tLlnIKKzE=


0

您还可以从当前URL的Uri中提取值,而无需对该值进行编码。

示例:

 Uri u = new Uri("http://localhost.com/default.aspx?S3tLlnIKKzE%3d");
 string q = u.Query;

还有你页面的一部分:

 string q = !String.IsNullOrEmpty(Request.Url.Query) && Request.Url.Query.Length > 1 ? Request.Url.Query.Substring(1) : Request.Url.Query; 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接