encodeURI()

La méthode encodeURI() encode un Uniform Resource Identifier (URI) en remplaçant chaque exemplaire de certains caractères par une, deux, trois ou quatre séquences d'échappement représentant le caractère encodé en UTF-8 (les quatre séquences d'échappement ne seront utilisées que si le caractère est composé de deux caractères « surrogate »).

Syntaxe

encodeURI(URI)

Paramètres

URI
Un Uniform Resource Identifier complet.

Description

En prenant l'hypothèse que l'URI est un URI complet, les caractères réservés qui ont une signification spéciale ne sont pas encodés.

encodeURI remplacera tous les caractères par leur séquence d'échappement UTF-8, à l'exception des caractères suivants :

Type Comprend
Caractères réservés ; , / ? : @ & = + $
Caractères non échappés caractères de l'alphabet latin, chiffres, - _ . ! ~ * ' ( )
Croisillon #

encodeURI seule ne permet pas de former des requêtes HTTP GET et POST entières (comme le permet XMLHTTPRequest) car "&", "+", et "=" ne sont pas encodés et sont traités comme des caractères spéciaux pour les requêtes GET et POST. encodeURIComponent(), en revanche, permet d'encoder ces caractères.

Une exception URIError sera levée si l'élément à encoder est un seul demi-codet d'une paire de demi-codets (un élément d'une « surrogate pair ») :

// une paire de demi-codets : OK
console.log(encodeURI('\uD800\uDFFF'));

// un seul demi-codet (supérieur) : "URIError: malformed URI sequence"
console.log(encodeURI('\uD800'));

// un seul demi-codet (inférieur) : "URIError: malformed URI sequence"
console.log(encodeURI('\uDFFF')); 

Si on souhaite suivre la RFC 3986 qui concerne les URL et qui rend les crochets réservés (pour IPv6) (il ne faut donc plus encoder ces caractères lorsqu'ils font partie d'une URL (notamment pour la partie représentant l'hôte), on pourra utiliser le fragment de code suivant :

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

Spécifications

Spécification Statut Commentaires
Troisième édition d'ECMAScript. Standard Définition standard.
ECMAScript 5.1 (ECMA-262)
La définition de 'encodeURI' dans cette spécification.
Standard  
ECMAScript 6 (ECMA-262)
La définition de 'encodeURI' dans cette spécification.
En cours de validation comme recommandation  

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support simple (Oui) (Oui) (Oui) (Oui) (Oui)
Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support simple (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight, teoli, Jeremie, Delapouite, MattouFP
Dernière mise à jour par : SphinxKnight,