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