URIError: malformed URI sequence

Die JavaScript-Ausnahme "malformed URI sequence" tritt auf, wenn die URI-Codierung oder -Decodierung nicht erfolgreich war.

Meldung

URIError: URI malformed (V8-based)
URIError: malformed URI sequence (Firefox)
URIError: String contained an illegal UTF-16 sequence. (Safari)

Fehlertyp

Was ist schiefgelaufen?

Die URI-Codierung oder -Decodierung war nicht erfolgreich. Ein an die Funktionen decodeURI, encodeURI, encodeURIComponent oder decodeURIComponent übergebenes Argument war ungültig, sodass die Funktion nicht in der Lage war, korrekt zu codieren oder zu decodieren.

Beispiele

Kodierung

Die Kodierung ersetzt jede Instanz bestimmter Zeichen durch eine, zwei, drei oder vier Escape-Sequenzen, die die UTF-8-Kodierung des Zeichens darstellen. Ein URIError wird ausgelöst, wenn versucht wird, einen Stellvertreter zu kodieren, der nicht Teil eines Hoch-Tief-Paares ist, zum Beispiel:

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

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

Ein Hoch-Tief-Paar ist in Ordnung. Zum Beispiel:

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

Decodierung

Die Decodierung ersetzt jede Escape-Sequenz in der kodierten URI-Komponente durch das Zeichen, das sie darstellt. Wenn es ein solches Zeichen nicht gibt, wird ein Fehler ausgelöst:

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

Mit korrektem Input sollte dies normalerweise so aussehen:

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

Siehe auch