Проблема Querystring на C # со специальными символами - PullRequest
2 голосов
/ 07 декабря 2010

Я столкнулся с очень странной проблемой, когда в моем запросе было "++" как часть текста.но когда я присваиваю значение stirng запроса строке ++, я получаю два пробела.Как мне получить именно то, что передается в виде строки запроса?

Я заметил, что в коллекции querystirng было "++", но когда я сделал Request.QueryString ["search"]. ToString () "++" ушелЯ проверял в Немедленном окне.

Я использую C # 2.0

URL: /default.aspx?search=test++

string t = Request.QueryString["search"].ToString();

Ответы [ 4 ]

8 голосов
/ 07 декабря 2010

Вы должны использовать UrlEncode и UrlDecode

Эти методы следует использовать каждый раз, когда вы вставляете введенные пользователем данные в строку запроса.

3 голосов
/ 07 декабря 2010

'+' зарезервировано в строках запроса .

В компоненте запроса символы ";", "/", "?", ":", "@", "&", "=", "+", ","и" $ "зарезервированы.

Попробуйте использовать UrlEncode для кодирования строк запроса.

2 голосов
/ 07 декабря 2010

Знак плюс в строке запроса переводится в пробел. Если вы хотите использовать знак плюса вместо пробела, используйте %2B.

/default.aspx?search=test%2B%2B

Если вы делаете это в коде, то вы должны использовать UrlEncode для кодирования этой части строки запроса.

1 голос
/ 07 декабря 2010

Я не знаю, есть ли способ получить точный текст, переданный в запрос. Стандарты HTTP в основном говорят, что + эквивалентен пробелу, поэтому, если вы хотите сохранить +, вам следует закодировать строку запроса, как сказал Чак.

...