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