HttpUtility.ParseQueryString без декодирования специальных символов - PullRequest
10 голосов
/ 05 января 2011
Uri uri = new Uri(redirectionUrl);
NameValueCollection col = HttpUtility.ParseQueryString(uri.Query)

uri.Query уже декодировано - поэтому есть ли способ, которым я могу предотвратить ParseQueryString декодирование снова?

Кроме этого - есть ли другой метод для получения коллекции значений имени изUri без изменения каких-либо компонентов?

Ответы [ 2 ]

6 голосов
/ 05 января 2011

Кодирование uri.Query перед передачей его на ParseQueryString - первое, что приходит мне в голову.

UPDATE

Только что проверил метод ParseQueryString с помощью Reflector: он предполагает, что строка запроса закодирована, и вы ничего не можете с ней сделать ... Bummer. Поэтому я думаю, что вам нужно разобрать его вручную (в Интернете есть множество готовых к использованию алгоритмов).

В качестве альтернативы вы можете правильно кодировать строку запроса (с учетом имен переменных и всех специальных символов) перед передачей ее в метод ParseQueryString.

- Павел

0 голосов
/ 05 ноября 2013

Я столкнулся с той же проблемой.Решением является добавление второго параметра - кодировки.Похоже, что все работает, если вы установите кодировку UTF8.

NameValueCollection col = HttpUtility.ParseQueryString(uri.Query, Encoding.UTF8)
...