monochromer
@monochromer
DIVeloper

В чём отличие результатов кодировок `encodeURI`, `encodeURIComponent` и `application/x-www-form-urlencoded`?

Какие отличия кодировки `application/x-www-form-urlencoded` от результатов функций `encodeURI` и `encodeURIComponent`?
  • Вопрос задан
  • 344 просмотра
Решения вопроса 2
@alexalexes
Отличия в охвате специальных символов, которые подвергаются конвертированию.
Функция encodeURI меньше охватывает символов, а функция encodeURIComponent - больше.
Но ни та, ни другая не достигает стандарта RFC 3986, чтобы считаться полностью правильно закодированным в вид контента application/x-www-form-urlencoded (смотрите документацию по encodeURI).

PS: Со стороны php сервера такая же история. Есть urlencode/urldecode - которые неполные по RFC 3986, а есть rawurlencode/rawurldecode - которые полностью удовлетворяют стандарту RFC 3986. При кастомном конструировании http пакетов предпочтительно использовать последние.
Ответ написан
zkrvndm
@zkrvndm
Архитектор решений
Лучше не использовать `encodeURI` и `encodeURIComponent`.

Есть решение, которые будет давать правильную строку для адреса всегда:
new URLSearchParams({ test1: 'Привет, мир!', test2: 'Hello' }).toString();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы