Как кодировать символ плюс (+) в URL - PullRequest
53 голосов
/ 27 марта 2011

Ссылка URL ниже откроет новое окно почты Google. У меня проблема в том, что Google заменяет все плюсы (+) в теле письма на пустое место. Похоже, это происходит только со знаком +. Любые предложения о том, как это исправить? (Я работаю на веб-странице ASP.NET)

https://mail.google.com/mail?view=cm&tf=0&to=someemail@somedomain.com&su=some субъект и тело = Привет + Привет

(В теле письма "Привет, привет!" Будет отображаться как "Привет, привет!")

Ответы [ 4 ]

81 голосов
/ 27 марта 2011

Символ + имеет специальное значение в url =>, что означает пробел.Если вы хотите использовать знак +, вам нужно закодировать его URL-адресом:

body=Hi+there%2bHello+there

Вот пример того, как вы можете правильно генерировать URL в .NET:

var uriBuilder = new UriBuilder("https://mail.google.com/mail");

var values = HttpUtility.ParseQueryString(string.Empty);
values["view"] = "cm";
values["tf"] = "0";
values["to"] = "someemail@somedomain.com";
values["su"] = "some subject";
values["body"] = "Hi there+Hello there";

uriBuilder.Query = values.ToString();

Console.WriteLine(uriBuilder.ToString());
* 1008результат

https://mail.google.com:443/mail?view=cm&tf=0&to=someemail%40somedomain.com&su=some+subject&body=Hi+there%2bHello+there

16 голосов
/ 27 марта 2011

Если вам нужен символ плюса (+) в теле, вы должны закодировать его как 2B.

Например: Попробуйте это

2 голосов
/ 12 января 2019

для языка JavaScript используйте функцию encodeURIComponent для кодирования специальных символов

2 голосов
/ 27 октября 2016

Безопаснее всегда кодировать все символы в процентах, кроме тех, которые определены как "незарезервированные" в RFC-3986.

не зарезервировано = ALPHA / DIGIT / "-" / "."/ "_" / "~"

Итак, процентное кодирование символа плюс и других специальных символов.

Проблема, с которой вы столкнулись с плюсами, заключается в том, что, согласно RFC-1866 (Спецификация HTML 2.0), пункт 8.2.1.подпункт 1. «Имена и значения полей формы экранируются: пробельные символы заменяются на« + », а затем зарезервированные символы экранируются»).Этот способ кодирования данных формы также приведен в более поздних спецификациях HTML, поищите соответствующие параграфы о application / x-www-form-urlencoded.

...