Подтвердить что ты не робот

Плюс добавить строку запроса

У меня есть webapp, созданный с использованием С# и asp.net. Я поместил значение параметра в querystring с знаком плюса (+). Но знак плюса исчезает.

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

Просьба сообщить.

Спасибо.

Изменить: добавлен код с UrlEncode

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

Ответ 1

Знак

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

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

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

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

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

и

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

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

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

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

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

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

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

var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);

Ответ 2

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

Ответ 4

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

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

string myUrl = "http://myurl?param1="  + Server.UrlEncode("my+param+1");

Ответ 5

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

Ответ 6

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

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

klasjdlkasd + djid3223

Ответ 7

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

string s = Request.QueryString [ "id" ]. Trim(). Заменить ( "," +");

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

Ответ 8

Попробуйте, это работает для меня:

Request.QueryString["new"].Trim();

Ответ 9

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

strText = strText.Replace(" ", "+");