JavaScript метод encodeURI()
JavaScript объект GlobalОпределение и применение
JavaScript метод encodeURI() объекта Global кодирует URI (англ. Uniform Resource Identifier – унифицированный идентификатор ресурса) заменяя каждый экземпляр определенных символов одной, двумя, тремя или четырьмя управляющих последовательностей, представляющими кодировку символа UTF-8. Для того, чтобы декодировать URI, ранее созданный функцией encodeURI() вы можете воспользоваться методом decodeURI().
Обращаю Ваше внимание на то, что метод encodeURI() не кодирует зарезервированные символы, имеющие особое значение в URI, а именно:
A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
Остальные символы (кроме вышеуказанных) заменяются путем преобразования символа в его код UTF-8 и последующего кодирования каждого из полученных байтов шестнадцатеричной управляющей последовательностью в формате %xx. При этом ASCII-символы заменяются одной последовательностью %xx, с кодами от \u0080 до \u07ff двумя управляющими последовательностями, а все остальные 16-разрядные символы Юникода тремя управляющими последовательностями.
Метод encodeURIComponent() отличается от метода encodeURI(). Метод encodeURIComponent() предполагает, что его параметр является не весь URI, а лишь фрагмент URI (такой как протокол, имя хоста, путь или строка запроса). По этой причине он преобразует все символы за исключением следующих:
A-Z a-z 0-9 - _ . ! ~ * ' ( )
Если компоненты URI могут содержать такие символы как ? и # (например, строка запроса), то в этом случае необходимо кодировать каждый компонент отдельно с помощью функции encodeURIComponent().
Отличие методов encodeURIComponent() и encodeURI() вы можете увидеть в примере ниже.
Поддержка браузерами
Метод | Chrome | Firefox | Opera | Safari | IExplorer | Edge |
---|---|---|---|---|---|---|
encodeURI() | Да | Да | Да | Да | Да | Да |
JavaScript синтаксис:
encodeURI(URI);
URI - String
Версия JavaScript
ECMAScript 3rd Edition (ECMA-262)Значения параметров
Параметр | Описание |
---|---|
URI | Uniform Resource Identifier – унифицированный идентификатор ресурса. |
Исключения
Тип исключения | Описание |
---|---|
URIError | Возникает в том случае, если строка URI (унифицированный идентификатор ресурса) содержит искаженные суррогатные пары символов Юникода и не может быть закодирована. |
Пример использования
Базовое использование
const uri = "https://basicweb.ru/?q=справочник"; const encoded = encodeURI(uri); // кодируем URI console.log(encoded); // "https://basicweb.ru/?q=%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA" const decoded = decodeURI(encoded); // декодируем URI console.log(decoded); // "https://basicweb.ru/?q=справочник"
Отличие работы методов encodeURIComponent() и encodeURI()
const str1 = ";,/?:@&=+$"; // Reserved Characters const str2 = "-_.!~*'()"; // Unescaped Characters const str3 = "#"; // Number Sign const str4 = "AZZZ zasdsd 19999"; // Alphanumeric Characters + Space console.log(encodeURI(str1)); // ;,/?:@&=+$ console.log(encodeURIComponent(str1)); // %3B%2C%2F%3F%3A%40%26%3D%2B%24 console.log(encodeURI(str2)); // -_.!~*'() console.log(encodeURIComponent(str2)); // -_.!~*'() console.log(encodeURI(str3)); // # console.log(encodeURIComponent(str3)); // %23 console.log(encodeURI(str4)); // AZZZ%20zasdsd%2019999 console.log(encodeURIComponent(str4)); // AZZZ%20zasdsd%2019999JavaScript объект Global