unescape() (deprecated) và decodeURI()/decodeURIComponent() (chuẩn) dùng để giải mã chuỗi đã được encode.
Phương pháp hiện đại (Khuyên dùng)
| Encode | Decode | Phạm vi |
|---|---|---|
encodeURI() | decodeURI() | Toàn bộ URL (giữ : / ? # & =) |
encodeURIComponent() | decodeURIComponent() | Thành phần URL (encode tất cả ký tự đặc biệt) |
Ví dụ decodeURIComponent
<script>
const encoded = "Tutorix%20is%20the%20best%20e-learning%20platform";
document.write(decodeURIComponent(encoded));
// "Tutorix is the best e-learning platform"
</script>
Legacy: unescape() / escape() — ĐÃ LOẠI BỎ
Không dùng trong code mới. Chỉ để hiểu code cũ.
escape(): Encode hầu hết ký tự trừ@ * _ + - . /. Không encode Unicode tốt.unescape(): Decode tương ứng.
Ví dụ legacy (chỉ tham khảo)
<script>
const str = "Tutorialspoint!!";
const encoded = escape(str); // "Tutorialspoint%21%21"
const decoded = unescape(encoded); // "Tutorialspoint!!"
document.write('Encoded: ' + encoded + '<br>');
document.write('Decoded: ' + decoded);
</script>
Kết quả
Encoded: Tutorialspoint%21%21 Decoded: Tutorialspoint!!
Lưu ý quan trọng
escape/unescapekhông xử lý Unicode đúng chuẩn (dùng UTF-16 code unit).- Ký tự
.và@không bị encode bởiescape()— khác vớiencodeURIComponent(). - Luôn dùng
encodeURIComponent/decodeURIComponentcho query param, form data. - Dùng
encodeURI/decodeURIcho toàn bộ URL.
Ví dụ thực tế: Xử lý query string
const url = "https://example.com/search?q=javascript%20tutorial&lang=vi";
const parsed = new URL(url);
const keyword = decodeURIComponent(parsed.searchParams.get('q')); // "javascript tutorial"
console.log(keyword);