decodeURI()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Hàm decodeURI() giải mã một Uniform Resource Identifier (URI) đã được tạo trước đó bởi encodeURI() hoặc một hàm tương tự.
Try it
const uri = "https://mozilla.org/?x=шеллы";
const encoded = encodeURI(uri);
console.log(encoded);
// Expected output: "https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B"
try {
console.log(decodeURI(encoded));
// Expected output: "https://mozilla.org/?x=шеллы"
} catch (e) {
// Catches a malformed URI
console.error(e);
}
Cú pháp
decodeURI(encodedURI)
Tham số
encodedURI-
Một Uniform Resource Identifier hoàn chỉnh đã được mã hóa.
Giá trị trả về
Một chuỗi mới biểu thị phiên bản không được mã hóa của Uniform Resource Identifier (URI) đã được mã hóa.
Ngoại lệ
URIError-
Được ném ra nếu
encodedURIchứa ký tự%không được theo sau bởi hai chữ số thập lục phân, hoặc nếu chuỗi thoát không mã hóa một ký tự UTF-8 hợp lệ.
Mô tả
decodeURI() là thuộc tính hàm của đối tượng toàn cục.
Hàm decodeURI() giải mã URI bằng cách xử lý mỗi chuỗi thoát có dạng %XX như một đơn vị mã UTF-8 (một byte). Trong UTF-8, số bit 1 đứng đầu trong byte đầu tiên, có thể là 0 (cho ký tự ASCII 1 byte), 2, 3 hoặc 4, chỉ ra số byte trong ký tự đó. Vì vậy, bằng cách đọc chuỗi thoát đầu tiên, decodeURI() có thể xác định có bao nhiêu chuỗi thoát tiếp theo cần tiêu thụ. Nếu decodeURI() không tìm thấy số chuỗi dự kiến, hoặc nếu các chuỗi thoát không mã hóa một ký tự UTF-8 hợp lệ, URIError sẽ được ném ra.
decodeURI() giải mã tất cả các chuỗi thoát, nhưng nếu chuỗi thoát mã hóa một trong các ký tự sau, chuỗi thoát đó được giữ nguyên trong chuỗi đầu ra (vì chúng là một phần của cú pháp URI):
; / ? : @ & = + $ , #
Ví dụ
>Giải mã URL tiếng Cyrillic
decodeURI(
"https://mdn.go-mizu.dev/ru/docs/JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B",
);
// "https://mdn.go-mizu.dev/ru/docs/JavaScript_шеллы"
decodeURI() và decodeURIComponent()
decodeURI() giả định rằng đầu vào là một URI đầy đủ, vì vậy nó không giải mã các ký tự là một phần của cú pháp URI.
decodeURI(
"https://mdn.go-mizu.dev/docs/JavaScript%3A%20a_scripting_language",
);
// "https://mdn.go-mizu.dev/docs/JavaScript%3A a_scripting_language"
decodeURIComponent(
"https://mdn.go-mizu.dev/docs/JavaScript%3A%20a_scripting_language",
);
// "https://mdn.go-mizu.dev/docs/JavaScript: a_scripting_language"
Bắt lỗi
try {
const a = decodeURI("%E0%A4%A");
} catch (e) {
console.error(e);
}
// URIError: malformed URI sequence
Đặc tả kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-decodeuri-encodeduri> |