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:
encodeURI("\uD800");
// "URIError: malformed URI sequence"
encodeURI("\uDFFF");
// "URIError: malformed URI sequence"
Ein Hoch-Tief-Paar ist in Ordnung. Zum Beispiel:
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:
decodeURIComponent("%E0%A4%A");
// "URIError: malformed URI sequence"
Mit korrektem Input sollte dies normalerweise so aussehen:
decodeURIComponent("JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");
// "JavaScript_шеллы"