encodeURI()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
ÐеÑод encodeURI () кодиÑÑÐµÑ ÑнивеÑÑалÑнÑй иденÑиÑикаÑÐ¾Ñ ÑеÑÑÑÑа (URI), замеÑÐ°Ñ Ð½ÐµÐºÐ¾ÑоÑÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð½Ð° однÑ, две, ÑÑи или ÑеÑÑÑе ÑпÑавлÑÑÑие поÑледоваÑелÑноÑÑи, пÑедÑÑавлÑÑÑие UTF-8 кодиÑÐ¾Ð²ÐºÑ Ñимвола (ÑеÑÑÑе ÑпÑавлÑÑÑие поÑледоваÑелÑноÑÑи бÑдÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ñ ÑолÑко Ð´Ð»Ñ Ñимволов, ÑоÑÑоÑÑÐ¸Ñ Ð¸Ð· двÑÑ Â«ÑÑÑÑогаÑнÑÑ Â» Ñимволов).
ÐнÑеÑакÑивнÑй пÑимеÑ
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).
ÐпиÑание
ÐÑедполагаеÑÑÑ, ÑÑо 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, "]");
}
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-encodeuri-uri> |