问题
Uri uri = new Uri(redirectionUrl);
NameValueCollection col = HttpUtility.ParseQueryString(uri.Query)
uri.Query
is already decoded - so is there any way I can prevent ParseQueryString
decoding it again?
Apart from that - is there another method to retrieve a name value collection from a Uri without modifying any components?
回答1:
Encoding the uri.Query
before passing it to ParseQueryString
is the first thing that comes to my head.
UPDATE
Just checked the ParseQueryString
method with Reflector: it assumes that the query string is encoded and you can't do anything with it... Bummer. So I think you need to parse it manually (there are plenty of ready-to-use algorithms on the Web).
Alternatively you could encode your query string properly (taking into account variable names and all special characters) before passing it to ParseQueryString
method.
-- Pavel
回答2:
I have faced the same problem. The solution is adding the second parameter - the encoding. It seams that everything works if you set UTF8 encoding.
NameValueCollection col = HttpUtility.ParseQueryString(uri.Query, Encoding.UTF8)
来源:https://stackoverflow.com/questions/4604158/httputility-parsequerystring-without-decoding-special-characters