Что-то, что я до сих пор не понимаю при выполнении запроса http-get к серверу, это в чем преимущество использования JS-функции encodeURIcomponent для кодирования каждого компонента http-get.
Выполняя некоторые тесты, я увидел, что сервер (использующий PHP) правильно получает значения запроса http-get, даже если я не использую encodeURIcomponent! Очевидно, мне все еще нужно кодировать на уровне клиента специальный символ & ? = / : в противном случае значение http-get, подобное этому «мир и любовь = добродетель», будет рассматриваться как новая пара значений ключа запроса http-get вместо одного единственного значения. Но почему encodeURIcompenent также кодирует многие другие символы, такие как, например, 'è', который переводится в %C3%A8, который должен быть декодирован на сервере PHP с помощью функции utf8_decode.
При использовании компонента encodeURIcomponent все значения запроса http-get кодируются в кодировке utf8, поэтому при их получении в PHP мне приходится каждый раз вызывать функцию utf8_decode для каждого значения $_GET, что довольно раздражает.
Почему мы не можем просто закодировать только & ? = / : символы?
см. также: результат JS encodeURIComponent отличается от созданного FORM Это показывает, что encodeURIComponent даже не кодирует должным образом, потому что простая браузерная FORM GET кодирует символы, такие как '€', по-другому. Так что мне все еще интересно, для чего нужен этот encodeURIComponent?