Поэтому я попытался найти и заменить перед отправкой в «% плюс%»
Этого недостаточно.Если вам не удается URL-кодировать символ +
, вы почти наверняка забудете что-либо кодировать в URL, и есть много других символов, которые вызовут сбой, если не кодировать URL, а не только знак плюс.
Вам необходимо использовать encodeURIComponent()
при создании запроса для кодирования специальных символов внутри параметров:
var url= 'something?param='+encodeURIComponent(param)+'&other='+encodeURIComponent(other);
В противном случае любые символы, которые не помещаются в URL, могут привести к повреждению, включая +
(что означает пробел, если он включен в параметр запроса; для действительного знака плюс вам потребуется %2B
) и много других знаков пунктуации, а также все символы, не входящие в ASCII (например, €
должно быть %E2%82%AC
,используя кодировку UTF-8).
Ни при каких обстоятельствах не используйте функции JavaScript escape()
и unescape()
. Это не URL-кодировка, а нестандартная кодировка, свойственнаяв JavaScript, который похож на кодировку URL, но не совместим.В частности, все символы не ASCII изуродованы, поэтому €
не будет работать.