HttpUtility.ParseQueryString无需解码特殊字符

时间:2011-01-05 12:51:49

标签: c# .net asp.net urlencode

Uri uri = new Uri(redirectionUrl);
NameValueCollection col = HttpUtility.ParseQueryString(uri.Query)

uri.Query已经解码了 - 所以有什么方法可以阻止ParseQueryString再次解码它吗?

除此之外 - 还有另一种方法可以从Uri 检索名称值集合而不用修改任何组件吗?

2 个答案:

答案 0 :(得分:6)

在将uri.Query传递给ParseQueryString之前对其进行编码是我的第一件事。

<强>更新

刚刚使用Reflector检查了ParseQueryString方法:它假定查询字符串已编码,您无法对其执行任何操作... Bummer。所以我认为你需要手动解析它(网上有很多现成的算法)。

或者,在将查询字符串传递给ParseQueryString方法之前,您可以正确编码查询字符串(考虑变量名称和所有特殊字符)。

- 帕维尔

答案 1 :(得分:-3)

我遇到了同样的问题。解决方案是添加第二个参数 - 编码。如果你设置了UTF8编码,那么一切都有效。

NameValueCollection col = HttpUtility.ParseQueryString(uri.Query, Encoding.UTF8)
相关问题