Метод encodeURI () кодирует универсальный идентификатор ресурса (URI), замещая некоторые символы на одну, две, три или четыре управляющие последовательности, представляющие UTF-8 кодировку символа (четыре управляющие последовательности будут использованы только для символов, состоящих из двух «суррогатных» символов).
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Синтаксис
encodeURI(URI)
Параметры
URI
- Полный URI.
-
Возвращаемое значение
Новая строка, представляющая собой строку-параметр, закодированную в виде универсального идентификатора ресурса (URI).
Описание
Предполагается, что URI является полным URI, поэтому метод не кодирует зарезервированные символы, имеющие особое значение в URI.
encodeURI заменяет все символы, кроме следующих с соответствующими UTF-8 управляющими последовательностями:
Тип | Включения |
Зарезервированные символы | ; , / ? : @ & = + $ |
Неэкранируемые символы | латинские буквы, десятичные цифры, - _ . ! ~ * ' ( ) |
Score | # |
Заметим, что encodeURI
сам по себе не может сформировать правильные HTTP GET и POST запросы, такие как XMLHTTPRequests, потому, что "&", "+", и "=" не закодированы, которые воспринимаются как специальные символы в GET и POST запросах. encodeURIComponent
, однако, кодирует эти символы
Замечание: URIError
будет брошена, если попытаться закодировать суррогат, который не является частью высоко-низкой пары, например:
// низко-высокая пара - нормально
console.log(encodeURIComponent('\uD800\uDFFF'));
// один высокий суррогат бросит "URIError: malformed URI sequence"
console.log(encodeURIComponent('\uD800'));
// один низкий суррогат бросит "URIError: malformed URI sequence"
console.log(encodeURIComponent('\uDFFF'));
Также заметим, что следуя наиболее свежей RFC3986 для URL, которая делает квадратные скобки защищенными (для IPv6) и таким образом не кодирует, когда формирование чего-либо, не являющегося частью URL (такое как домен), следующий сниппет поможет:
function fixedEncodeURI (str) {
return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']');
}
Спецификация
Спецификация | Статус | Комментарий |
---|---|---|
ECMAScript 3rd Edition. | Standard | Initial definition. |
ECMAScript 5.1 (ECMA-262) Определение 'encodeURI' в этой спецификации. |
Стандарт | |
ECMAScript 2015 (6th Edition, ECMA-262) Определение 'encodeURI' в этой спецификации. |
Стандарт |
Поддержка браузерами
BCD tables only load in the browser
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.