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

js
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 encodedURI chứ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

js
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.

js
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

js
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

Tương thích trình duyệt

Xem thêm