Esta tradução não está completa. Por favor ajude a traduzir este artigo a partir 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) |