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

Как кодировать символ плюса (+) в URL-адресе

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

https://mail.google.com/mail?view=cm&tf=0&[email protected]&su=some subject & body = Привет там + Привет там

(В электронной почте тела "Привет там + Hello there" появится как "Привет там Hello there" )

4b9b3361

Ответ 1

Символ + имеет особое значение в 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"] = "[email protected]";
values["su"] = "some subject";
values["body"] = "Hi there+Hello there";

uriBuilder.Query = values.ToString();

Console.WriteLine(uriBuilder.ToString());

Результат

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

Ответ 2

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

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

Ответ 3

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

unreserved = ALPHA/DIGIT/ "-" / "." / "_" / "~"

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

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

Ответ 4

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