[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/encodeURI [Back]  [Original]

encodeURI() - JavaScript | MDN

Esta pgina foi traduzida do ingls pela comunidade. Saiba mais e junte-se comunidade MDN Web Docs.

View in English Always switch to English

encodeURI()

Baseline Widely available

This feature is well established and works across many devices and browser versions. Its been available across browsers since julho de 2015.

A funo encodeURI() codifica a URI substituindo cada instncia de certos caracteres por um, dois, trs ou quatro sequncias de escape representando a codificao UTF-8 do caracter (ser somente quatro sequncias de escape para caracteres compostos de dois caracteres substitutos).

In this article

Experimente

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);
}

Sintaxe

encodeURI(URI)

Parmetros

URI

Uma URI completa.

Valor de retorno

Uma nova cadeia de caracteres representando a cadeia de caracteres provida, codificada como uma URI.

Descrio

A funo encodeURI() no codifica caracteres que possuem significado especial (caracteres reservados) para a URI. O exemplo seguinte mostra todas as partes que o "esquema" da URI pode possivelmente conter. Note como certos caracteres so usados para dar significado especial:

http://username:password@www.example.com:80/path/to/file.php?foo=316&bar=this+has+spaces#anchor

Consequentemente, encodeURI() no codifica caracteres que so necessrios para formular uma URI completa. Tambm, encodeURI() no codifica alguns caracteres adicionais, conhecidos como "marcas no reservadas (unreserved marks)", que no tem propsito reservado mas so permitidos na URI "como so". (Veja RFC2396)

encodeURI() escapa todos os caracteres exceto:

No escapado:

    A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #

Exemplos

encodeURI vs encodeURIComponent

encodeURI() se difere de encodeURIComponent() como a seguir:

js
var set1 = ";,/?:@&=+$#"; // Caracteres reservados
var set2 = "-_.!~*'()"; // Marcas no reservadas
var set3 = "ABC abc 123"; // Caracteres alfanumricos + Espao

console.log(encodeURI(set1)); // ;,/?:@&=+$#
console.log(encodeURI(set2)); // -_.!~*'()
console.log(encodeURI(set3)); // ABC%20abc%20123 (o espao  codificado como %20)

console.log(encodeURIComponent(set1)); // %3B%2C%2F%3F%3A%40%26%3D%2B%24%23
console.log(encodeURIComponent(set2)); // -_.!~*'()
console.log(encodeURIComponent(set3)); // ABC%20abc%20123 (o espao  codificado como %20)

Note que encodeURI() por si s no pode formar requisies GET e POST, como para XMLHttpRequest, porque "&", "+", e "=" no so codificados, que so tratados como caracteres especiais em requisies GET e POST. encodeURIComponent(), entretanto, codifica esses caracteres.

Codificando um substituto solitrio alto joga

Um URIError ser jogado se uma tentativa de codificar um substituto que no parte de um par alto-baixo, e.g.,

js
// par alto-baixo ok
console.log(encodeURI("\uD800\uDFFF"));

// substituto alto solitrio joga "URIError: malformed URI sequence"
console.log(encodeURI("\uD800"));

// substituto baixo solitrio joga "URIError: malformed URI sequence"
console.log(encodeURI("\uDFFF"));

Codificando para IPv6

Se voc deseja seguir a RFC3986 mais recente para URLs, que faz colchetes ser reservado (para IPv6) e ento no ser codificado quando formando algo que possa ser parte da URL (como o host), o seguinte cdigo pode ajudar:

js
function fixedEncodeURI(str) {
  return encodeURI(str).replace(/%5B/g, "[").replace(/%5D/g, "]");
}

Especificaes

Specification
ECMAScript 2027 LanguageSpecification
# sec-encodeuri-uri

Compatibilidade com navegadores

Veja tambm


Web Proxy Viewer  |  New URL  |  Original Page