URIError: malformed URI sequence

Message

URIError: The URI to be encoded contains invalid character (Edge)
URIError: malformed URI sequence (Firefox)
URIError: URI malformed (Chrome)

Type d'erreur

Quel est le problème ?

Il y a eu une erreur lors de l'encodage ou du décodage de l'URI. Un argument fourni à decodeURI, encodeURI, encodeURIComponent ou à decodeURIComponent n'était pas valide et la fonction concernée n'a pas pu encoder ou décoder la valeur correctement.

Exemples

Encodage

L'encodage permet de remplacer certains caractères par une, deux, trois voire quatre séquences d'échappement qui représente l'encodage UTF-8 du caractère. Une exception URIError sera levée si on tente d'encoder un caractère surrogate qui ne fait pas partie d'une paire de codets :

js
encodeURI("\uD800");
// "URIError: malformed URI sequence"

encodeURI("\uDFFF");
// "URIError: malformed URI sequence"

En revanche, si on dispose de la paire de codets :

js
encodeURI("\uD800\uDFFF");
// "%F0%90%8F%BF"

Décodage

Le décodage permet de remplacer chaque séquence d'échappement dans le composant encodé par le caractère qu'elle représente. S'il n'existe aucun caractère correspondant, une exception sera déclenchée :

js
decodeURIComponent("%E0%A4%A");
// "URIError: malformed URI sequence"

Avec la valeur d'entrée correcte, on a généralement quelque chose qui ressemble à :

js
decodeURIComponent("JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");
// "JavaScript_шеллы"

Voir aussi