encodeURI()
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) |