Repository navigation
Expand file tree
/
Copy pathindex.md
More file actions
90 lines (62 loc) · 4.42 KB
/
Copy pathindex.md
File metadata and controls
90 lines (62 loc) · 4.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
---
title: encodeURI()
slug: Web/JavaScript/Reference/Global_Objects/encodeURI
---
{{jsSidebar("Objects")}}
Метод **encodeURI ()** кодирует универсальный идентификатор ресурса (URI), замещая некоторые символы на одну, две, три или четыре управляющие последовательности, представляющие UTF-8 кодировку символа (четыре управляющие последовательности будут использованы только для символов, состоящих из двух «суррогатных» символов).
{{InteractiveExample("JavaScript Demo: Standard built-in objects - encodeURI()")}}
```js interactive-example
const uri = "https://mozilla.org/?x=шеллы";
const encoded = encodeURI(uri);
console.log(encoded);
// Expected output: "https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B"
try {
console.log(decodeURI(encoded));
// Expected output: "https://mozilla.org/?x=шеллы"
} catch (e) {
// Catches a malformed URI
console.error(e);
}
```
## Синтаксис
```
encodeURI(URI)
```
### Параметры
- `URI`
- : Полный {{Glossary("URI")}}.
### Возвращаемое значение
Новая строка, представляющая собой строку-параметр, закодированную в виде универсального идентификатора ресурса (URI).
## Описание
Предполагается, что URI является полным URI, поэтому метод не кодирует зарезервированные символы, имеющие особое значение в URI.
encodeURI заменяет все символы, **кроме** следующих с соответствующими UTF-8 управляющими последовательностями:
| Тип | Включения |
| ------------------------- | ---------------------------------------------------------------------- |
| Зарезервированные символы | `;` `,` `/` `?` `:` `@` `&` `=` `+` `$` |
| Неэкранируемые символы | латинские буквы, десятичные цифры, `-` `_` `.` `!` `~` `*` `'` `(` `)` |
| Score | `#` |
Заметим, что `encodeURI` сам по себе не может сформировать правильные HTTP GET и POST запросы, такие как XMLHTTPRequests, потому, что "&", "+", и "=" не закодированы, которые воспринимаются как специальные символы в GET и POST запросах. {{jsxref("encodeURIComponent")}}, однако, кодирует эти символы
Замечание: {{jsxref("URIError")}} будет брошена, если попытаться закодировать суррогат, который не является частью высоко-низкой пары, например:
```js
// низко-высокая пара - нормально
console.log(encodeURIComponent("\uD800\uDFFF"));
// один высокий суррогат бросит "URIError: malformed URI sequence"
console.log(encodeURIComponent("\uD800"));
// один низкий суррогат бросит "URIError: malformed URI sequence"
console.log(encodeURIComponent("\uDFFF"));
```
Также заметим, что следуя наиболее свежей [RFC3986](https://tools.ietf.org/html/rfc3986) для URL, которая делает квадратные скобки защищёнными (для IPv6) и таким образом не кодирует, когда формирование чего-либо, не являющегося частью URL (такое как домен), следующий сниппет поможет:
```js
function fixedEncodeURI(str) {
return encodeURI(str).replace(/%5B/g, "[").replace(/%5D/g, "]");
}
```
## Спецификации
{{Specifications}}
## Совместимость с браузерами
{{Compat}}
## Смотрите также
- {{jsxref("decodeURI()")}}
- {{jsxref("encodeURIComponent()")}}
- {{jsxref("decodeURIComponent()")}}
- Base62x