Для application/x-www-form-urlencoded пробелы должны быть заменены на "+", поэтому вам может понадобиться encodeURIComponent с дополнительной заменой "%20" на "+".
Источник: https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
Идем на wiki. Для типа данных application/x-www-form-urlencoded указана ссылка на документ HTML 4.01 Specification, Section 17.13.4.1 в котором написано следующее:
application/x-www-form-urlencoded
This is the default content type. Forms submitted with this content type must be encoded as follows:
Для MIME application/x-www-form-urlencoded используется такая же схема кодирования, как и для URL (ибо «...-urlencoded», то есть «закодировано как в URL»).
В свою очередь, в URL кодирование пробела плюсом является договорённостью. Причина этой договорённости банальна — читаемость. Дело в том, что web создавался в англоязычных США, и об использовании нелатинских адресов тогда даже не задумывались (или задумывались, но решили, что таких будет крайне немного), а потому каждая буква кодировалась как есть, без escape-последовательностей.
Сравните какой-нибудь:
www.example.org/fileName.asp?param1=some+Param+with+Long+length&bar=5000
и:
www.example.org/fileName.asp?param1=some%20Param%20with%20Long%20length&bar=5000
Думаю, не только мне прочитать первый вариант проще и быстрее, особенно в случае слов, начинающихся с больших букв.
P. S: В случае использования нелатинских символов, когда вся строка состоит из одних escape-последовательностей, разницы в способах записи пробела никакой, да.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости