Этот перевод не завершён. Пожалуйста, помогите перевести эту статью с английского
Метод 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' в этой спецификации. |
Стандарт |
Поддержка браузерами
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.
| Компьютеры | Мобильные | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
encodeURI | Chrome Полная поддержка 1 | Edge Полная поддержка 12 | Firefox Полная поддержка 1 | IE Полная поддержка 5.5 | Opera Полная поддержка 7 | Safari Полная поддержка 1.1 | WebView Android Полная поддержка 1 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 4 | Opera Android Полная поддержка 10.1 | Safari iOS Полная поддержка 1 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.1.100 |
Легенда
- Полная поддержка
- Полная поддержка