почему в некоторых случаях Request.QueryString заменяет + на пустой символ? - PullRequest
2 голосов
/ 28 июля 2010

У меня проблема в том, что если я передаю строку, содержащую + в строке запроса, и пытаюсь прочитать ее, она получает ту же строку, но заменяя + на пустой символ
Например, если я передаю запрос типа ../Page.aspx?data=sdf1+sdf, то при загрузке страницы я читаю data на data = Request.QueryString["data"], он будет выглядеть так: data ="sdf1 sdf"
Я решаю проблему, заменяя любой пустой символ на + ..

Но есть ли проблемы, которые вызывают это? и Является ли мое решение заменой пустого символа на + лучшим решением во всех случаях?

1 Ответ

5 голосов
/ 28 июля 2010

Потому что + - это представление пространства в кодировке url " ". Если вы хотите сохранить знак плюса в вашем значении, вам нужно будет url кодировать его:

"/Page.aspx?data=" + HttpUtility.UrlEncode("sdf1+sdf")

, который будет производить:

/Page.aspx?data=sdf1%2bsdf

Теперь, когда вы прочитаете Request.QueryString["data"], вы получите то, что ожидаете.

...