Uri uri = new Uri(redirectionUrl);
NameValueCollection col = HttpUtility.ParseQueryString(uri.Query)
uri.Query
已经解码 - 那么有没有什么办法可以防止再次ParseQueryString
解码呢?HttpUtility.ParseQueryString无需解码特殊字符
除此之外 - 是否有另一种方法来从Uri 检索名称值集合,而不是修改任何组件?
Uri uri = new Uri(redirectionUrl);
NameValueCollection col = HttpUtility.ParseQueryString(uri.Query)
uri.Query
已经解码 - 那么有没有什么办法可以防止再次ParseQueryString
解码呢?HttpUtility.ParseQueryString无需解码特殊字符
除此之外 - 是否有另一种方法来从Uri 检索名称值集合,而不是修改任何组件?
在将它传递给ParseQueryString
之前对uri.Query
进行编码是我首先想到的。
UPDATE
与反射刚才检查的ParseQueryString
方法:它假定查询字符串编码,你不能用它做什么...无赖。所以我认为你需要手动解析它(网上有很多现成的算法)。
或者,您可以在将它传递给ParseQueryString
方法之前,正确地编码查询字符串(考虑变量名称和所有特殊字符)。
- Pavel
我也遇到了同样的问题。解决方案是添加第二个参数 - 编码。如果你设置了UTF8编码,它会接近一切工作。
NameValueCollection col = HttpUtility.ParseQueryString(uri.Query, Encoding.UTF8)
默认情况下使用UTF8编码,因此显式添加它不起任何作用:http://msdn.microsoft.com/en-us/library/ms150046(v=vs.110).aspx – 2014-05-15 05:51:45
此选项没有任何影响 – jitidea 2015-05-28 08:43:00
这不幸没有任何影响。在将它传递给ParseQueryString之前,您应该正确地对查询字符串进行编码。 – 2015-10-11 09:32:27
我不能作为uri.Query包含变量名和? = – 2011-01-05 14:01:21
我已经更新了我的答案。希望这会帮助你做出正确的决定。 – volpav 2011-01-05 15:22:51