У меня есть веб-приложение, созданное с использованием C # и asp.net. Я поместил значение параметра в строку запроса со знаком плюс (+). Но знак плюс исчезнет.
Как включить знак плюса (+) в строку запроса, чтобы он не исчезал?
Пожалуйста, порекомендуйте.
Благодарю.
Изменить: добавлен код с UrlEncode
string str = Server.UrlEncode(Requery.QueryString["new"]);
c#
javascript
asp.net
домлао
источник
источник
UrlBuilder
, это кажется немного бесполезным, поэтому я наткнулся на ваш вопрос. См. Stackoverflow.com/questions/24576239/…UriBuilder
не URLОтветы:
+
Знак имеет семантическое значение в строке запроса. Он используется для обозначения пространства. Еще один символ, имеющий семантическую важность в строке запроса, -&
это символ, который используется для разделения различныхvar=value
пар в строке запроса.Большинство скриптов на стороне сервера декодируют параметры запроса перед их использованием, чтобы
+
правильно преобразовать a в пробел. Теперь, если вы хотите,+
чтобы в строке запроса присутствовал литерал , вам нужно указать%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.
Итак, если вы хотите, чтобы
+
знак сохранялся, когда JavaScript извлекает URL-адрес со+
знаками в его параметрах запроса, а сценарий на стороне сервера будет обрабатывать параметры запроса после его декодирования URL-адреса, вам следует URL-кодировать параметры запроса в URL-адресе. перед использованием выдачи HTTP-запроса на получение, чтобы все+
знаки были преобразованы в%2B
's, когда запрос достигает сценария на стороне сервера. Теперь, когда серверный скрипт URL-декодирует строку запроса, все%2B
преобразуется обратно в+
знаки, которые вам нужны.Смотрите Кодировать URL-адрес в JavaScript? чтобы узнать, как URL-кодировать параметры с помощью JavaScript. Краткий ответ из обсуждения там:
var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);
источник
Вы должны URLEncode значения вашей строки запроса, чтобы убедиться, что какие-либо специальные символы не потеряны.
источник
Посмотрите справочник по кодировке URL-адресов HTML
Вам нужно закодировать знак + - его значение должно быть% 2B
источник
+
Знак разрешен в значении параметра запроса, где он не должен кодироваться, потому что он уже кодирует «пробел»Я изменяю свое предыдущее утверждение, чтобы никого не запутать!
Создайте свой URL-адрес с помощью Server.UrlEncode. например
string myUrl = "http://myurl?param1=" + Server.UrlEncode("my+param+1");
источник
Другой простой способ -
Request.Url.ToString().Substring(Request.Url.ToString().IndexOf("=") + 1)
предположить, что мой URL-адресhttp://localhost/MyApp/Activate.aspx?ActivationCode=cHbtqH9P2dDZkx/mYUgFFo7nrNqSFgqdPisAzzu5/nwlEYDOHI+CQw==
источник
перед отправкой вам параметра вам необходимо проверить, содержит ли параметр знак плюс, если вам нужно заменить один флаг, например: параметр: klasjdlkasd + djid3223, вы можете заменить: klasjdlkasdFLAGdjid3223
и когда вы собираетесь конвертировать, вам нужно заменить angain
klasjdlkasd + djid3223
источник
Попробуйте это, у меня это работает:
Request.QueryString["new"].Trim();
источник
Решение состоит в том, чтобы ВСЕГДА включать .Replace ("", "+"), когда вы запрашиваете строку запроса
строка s = Request.QueryString ["id"]. Trim (). Replace ("", "+");
источник: http://www.webmasterworld.com/forum47/3238.htm
источник
Добавьте эту строку в Decrypt Funcation:
strText = strText.Replace(" ", "+");
источник