Знак плюс в строке запроса - PullRequest
52 голосов
/ 28 июля 2011

У меня есть веб-приложение, созданное с использованием C # и asp.net. Я поместил значение параметра в строку запроса со знаком плюс (+). Но знак плюс исчезает.

Как включить знак плюс (+) в строку запроса, не исчезая?

Пожалуйста, сообщите.

Спасибо.

Редактировать: добавлен код с UrlEncode

string str = Server.UrlEncode(Requery.QueryString["new"]);

Ответы [ 9 ]

100 голосов
/ 28 июля 2011
Знак

+ имеет семантическое значение в строке запроса.Он используется для представления пространства.Другим символом, имеющим семантическое значение в строке запроса, является &, который используется для разделения различных пар var=value в строке запроса.

Большинство сценариев на стороне сервера декодируют параметры запроса перед их использованием, поэтомучто + правильно конвертируется в пробел.Теперь, если вы хотите, чтобы в строке запроса присутствовал литерал +, вам нужно указать вместо него %2B.

+ знак в строке запроса URL-декодируется в пробел.%2B в строке запроса URL-декодируется со знаком +.

См. Разницу между

http://www.google.com/search?q=foo+bar

и

http://www.google.com/search?q=foo%2Bbar

В приведенных выше примерах серверный скрипт Google выполняет URL-декодирование параметров запроса и затем использует их для поиска.

URL-кодировка - не что иное, как знак %, за которым следует знакшестнадцатеричный код специального символа.Например, мы знаем, что шестнадцатеричный код A равен 0x41 (десятичное число: 65).Попробуйте это:

http://www.google.com/search?q=%41

Надеюсь, что это делает кодировку URL понятной.

Итак, если вы хотите, чтобы знак + сохранялся при извлечении JavaScriptURL-адрес со знаком + в его параметрах запроса и сценарий на стороне сервера будет обрабатывать параметры запроса после его декодирования URL-адресом; необходимо выполнить URL-кодирование параметров запроса в URL-адресе перед использованием запроса HTTP get, чтобы все * 1038Знаки * преобразуются в %2B, когда запрос достигает сценария на стороне сервера.Теперь, когда серверный скрипт URL-декодирует строку запроса, все %2B преобразуются обратно в + знаки, что вам нужно.

См. Кодирование URL в JavaScript? чтобы узнать, как URL-кодировать параметры с помощью JavaScript.Краткий ответ из обсуждения там:

var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);
5 голосов
/ 28 июля 2011

Посмотрите на Ссылка на кодировку URL-адреса HTML

Вам необходимо закодировать знак + - его значение должно быть% 2B

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

Вы должны URLEкодировать значения строки запроса, чтобы убедиться, что любые специальные символы не потеряны.

1 голос
/ 28 июля 2011

Я изменяю свое предыдущее утверждение, чтобы никто не запутался!

Создайте свой URL, используя Server.UrlEncode.например,

string myUrl = "http://myurl?param1="  + Server.UrlEncode("my+param+1");
0 голосов
/ 03 июня 2016

перед отправкой вам параметра, вам нужно проверить, содержит ли параметр знак плюс, если вам нужно заменить один флаг, например: параметр: klasjdlkasd + djid3223 Вы можете заменить: klasjdlkasdFLAGdjid3223

и когда вы идете конвертировать, вам нужно заменить Angain

klasjdlkasd + djid3223

0 голосов
/ 25 апреля 2016

Добавьте эту строку в Decrypt Funcation:

strText = strText.Replace(" ", "+");
0 голосов
/ 07 января 2016

Другой простой способ - Request.Url.ToString().Substring(Request.Url.ToString().IndexOf("=") + 1) при условии, что мой URL - http://localhost/MyApp/Activate.aspx?ActivationCode=cHbtqH9P2dDZkx/mYUgFFo7nrNqSFgqdPisAzzu5/nwlEYDOHI+CQw==

0 голосов
/ 08 января 2015

Попробуйте, у меня все работает:

Request.QueryString["new"].Trim();
0 голосов
/ 14 февраля 2014

Решение ВСЕГДА включать .Replace ("", "+") при запросе строки запроса

string s = Request.QueryString ["id"]. Trim (). Replace ("",«+»);

источник: http://www.webmasterworld.com/forum47/3238.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...