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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
---
title: encodeURI()
slug: Web/JavaScript/Reference/Global_Objects/encodeURI
tags:
- JavaScript
- NeedsUpdate
- Reference
- URI
translation_of: Web/JavaScript/Reference/Global_Objects/encodeURI
---
<div>
<div>
<div>{{jsSidebar("Objects")}}</div>
</div>
</div>
<p>Метод <strong>encodeURI ()</strong> кодирует универсальный идентификатор ресурса (URI), замещая некоторые символы на одну, две, три или четыре управляющие последовательности, представляющие UTF-8 кодировку символа (четыре управляющие последовательности будут использованы только для символов, состоящих из двух «суррогатных» символов).</p>
<p>{{EmbedInteractiveExample("pages/js/globalprops-encodeuri.html")}}</p>
<div class="hidden">
<p>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 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p>
</div>
<h2 id="Syntax" name="Syntax">Синтаксис</h2>
<pre class="syntaxbox"><code>encodeURI(<em>URI</em>)</code></pre>
<h3 id="Parameters" name="Parameters">Параметры</h3>
<dl>
<dt><code><font face="Consolas, Liberation Mono, Courier, monospace">URI</font></code></dt>
<dd>Полный {{Glossary("URI")}}.</dd>
<dt>
<h3 id="Возвращаемое_значение">Возвращаемое значение</h3>
<p>Новая строка, представляющая собой строку-параметр, закодированную в виде универсального идентификатора ресурса (URI).</p>
</dt>
</dl>
<h2 id="Description" name="Description">Описание</h2>
<p>Предполагается, что URI является полным URI, поэтому метод не кодирует зарезервированные символы, имеющие особое значение в URI.</p>
<p>encodeURI заменяет все символы, <strong>кроме</strong> следующих с соответствующими UTF-8 управляющими последовательностями:</p>
<table class="standard-table">
<tbody>
<tr>
<td class="header">Тип</td>
<td class="header">Включения</td>
</tr>
<tr>
<td>Зарезервированные символы</td>
<td><code>;</code> <code>,</code> <code>/</code> <code>?</code> <code>:</code> <code>@</code> <code>&</code> <code>=</code> <code>+</code> <code>$</code></td>
</tr>
<tr>
<td>Неэкранируемые символы</td>
<td>латинские буквы, десятичные цифры, <code>-</code> <code>_</code> <code>.</code> <code>!</code> <code>~</code> <code>*</code> <code>'</code> <code>(</code> <code>)</code></td>
</tr>
<tr>
<td>Score</td>
<td><code>#</code></td>
</tr>
</tbody>
</table>
<p>Заметим, что <code>encodeURI</code> сам по себе не может сформировать правильные HTTP GET и POST запросы, такие как XMLHTTPRequests, потому, что "&", "+", и "=" не закодированы, которые воспринимаются как специальные символы в GET и POST запросах. {{jsxref("Global_Objects/encodeURIComponent", "encodeURIComponent")}}, однако, кодирует эти символы</p>
<p>Замечание: {{jsxref("Global_Objects/URIError", "URIError")}} будет брошена, если попытаться закодировать суррогат, который не является частью высоко-низкой пары, например:</p>
<pre class="brush: js"><code>// низко-высокая пара - нормально
console.log(encodeURIComponent('\uD800\uDFFF'));
// один высокий суррогат бросит "URIError: malformed URI sequence"
console.log(encodeURIComponent('\uD800'));
// один низкий суррогат бросит "URIError: malformed URI sequence"
console.log(encodeURIComponent('\uDFFF'));</code></pre>
<p>Также заметим, что следуя наиболее свежей <a href="http://tools.ietf.org/html/rfc3986">RFC3986</a> для URL, которая делает квадратные скобки защищёнными (для IPv6) и таким образом не кодирует, когда формирование чего-либо, не являющегося частью URL (такое как домен), следующий сниппет поможет:</p>
<pre class="brush: js">function fixedEncodeURI (str) {
return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']');
}</pre>
<h2 id="Спецификация">Спецификация</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Спецификация</th>
<th scope="col">Статус</th>
<th scope="col">Комментарий</th>
</tr>
<tr>
<td>ECMAScript 3rd Edition.</td>
<td>Standard</td>
<td>Initial definition.</td>
</tr>
<tr>
<td>{{SpecName('ES5.1', '#sec-15.1.3.3', 'encodeURI')}}</td>
<td>{{Spec2('ES5.1')}}</td>
<td></td>
</tr>
<tr>
<td>{{SpecName('ES6', '#sec-encodeuri-uri', 'encodeURI')}}</td>
<td>{{Spec2('ES6')}}</td>
<td></td>
</tr>
</tbody>
</table>
<h2 id="Поддержка_браузерами">Поддержка браузерами</h2>
<p>{{Compat("javascript.builtins.encodeURI")}}</p>
<h2 id="See_Also" name="See_Also">Смотрите также</h2>
<ul>
<li>{{jsxref("decodeURI", "decodeURI()")}}</li>
<li>{{jsxref("encodeURIComponent", "encodeURIComponent()")}}</li>
<li>{{jsxref("decodeURIComponent", "decodeURIComponent()")}}</li>
<li>Base62x</li>
</ul>
|