This translation is incomplete. Please help translate this article from English
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) |