URIError: malformed URI sequence

當 URI 編碼或解碼不成功時,會發生 JavaScript 異常“malformed URI sequence”(URI 序列格式錯誤)。

訊息

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

錯誤型別

URIError

哪裡出錯了?

URI 編碼或解碼不成功。傳遞給 decodeURIencodeURIencodeURIComponentdecodeURIComponent 函式的引數無效,導致該函式無法正確編碼或解碼。

示例

編碼

編碼用一個、兩個、三個或四個轉義序列替換某些字元的每個例項,這些轉義序列表示該字元的 UTF-8 編碼。如果嘗試編碼不是高-低對一部分的代理項(例如),則會丟擲 URIError

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

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

高-低對是允許的。例如

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

解碼

解碼用它所代表的字元替換編碼 URI 元件中的每個轉義序列。如果沒有這樣的字元,則會丟擲錯誤

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

使用正確的輸入,這通常應該看起來像這樣

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

另見