encodeURI()

Esta tradução está incompleta. Por favor, ajude a traduzir este artigo do Inglês.

O método encodeURI() codifica um Uniform Resource Identifier (URI) substituindo cada instancia de determinados caracteres por um, dois, três, ou quatro sequências de escape que representem a codificação UTF-8 do caracter (apenas serão quatro sequências de caracteres de escape para caracteres compostos por dois caracteres de "substituição").

Sintaxe

encodeURI(URI)

Parâmetros

URI
Um Uniform Resource Identifier completo.

Descrição

Assumindo que o URI é um URI completo, não serão codificados caracteres reservados que tenham significado especial no URI.

encodeURI substitui todos os caracteres excepto as seguintes sequências de escape UTF-8:

Tipo Incluído
Caracteres reservados ; , / ? : @ & = + $
Caracteres excluídos alfabéticos, dígitos decimais , - _ . ! ~ * ' ( )
Ponto #

Note-se que o método encodeURI não consegue criar correctamente os pedidos HTTP GET e POST, o mesmo aplica-se para XMLHTTPRequests, porque os caracteres "&", "+", e "=" não são codificados, por se tratarem de caracteres especiais nos pedidos GET e POST. encodeURIComponent, no entanto, codifica estes caracteres.

Note-se que será lançado um URIError caso se tente codificar um substituto que não faça parte de um par superior-inferior, p.ex.,

// par superior-inferior ok
console.log(encodeURI('\uD800\uDFFF'));

// substituição única de par superior lança "URIError: malformed URI sequence"
console.log(encodeURI('\uD800'));

// substituição única de par inferior lança "URIError: malformed URI sequence"
console.log(encodeURI('\uDFFF')); 

Note-se também que caso se pretenda seguir a mais recente norma para URLs RFC3986, que torna os parênteses rectos reservados (para IPv6) e, por consequência, não será codificado quando fizer parte de um URL (como um host), o seguinte exemplo de código pode ajudar:

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

Especificações

Especificação Estado Comentário
ECMAScript 3rd Edition (ECMA-262) Standard Initial definition.
ECMAScript 5.1 (ECMA-262)
The definition of 'encodeURI' in that specification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'encodeURI' in that specification.
Standard  

Compatibilidade com navegador

Funcionalidade Chrome Firefox (Gecko) Internet Explorer Opera Safari
Suporte básico (Yes) (Yes) (Yes) (Yes) (Yes)
Funcionalidade Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Suporte básico (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

Veja também

Etiquetas do documento e contribuidores

 Última atualização por: kempcarlos,