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
|
---
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">Синтаксис</h2>
<pre class="syntaxbox"><code>encodeURI(<em>URI</em>)</code></pre>
<h3 id="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">Описание</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>
{{Specifications}}
<h2 id="Поддержка_браузерами">Поддержка браузерами</h2>
<p>{{Compat}}</p>
<h2 id="See_Also">Смотрите также</h2>
<ul>
<li>{{jsxref("decodeURI", "decodeURI()")}}</li>
<li>{{jsxref("encodeURIComponent", "encodeURIComponent()")}}</li>
<li>{{jsxref("decodeURIComponent", "decodeURIComponent()")}}</li>
<li>Base62x</li>
</ul>
|