Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Giải mã chuỗi đã encode trong JavaScript

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)

EncodeDecodePhạ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/unescape không xử lý Unicode đúng chuẩn (dùng UTF-16 code unit).
  • Ký tự . và @ không bị encode bởi escape() — khác với encodeURIComponent().
  • Luôn dùng encodeURIComponent/decodeURIComponent cho query param, form data.
  • Dùng encodeURI/decodeURI cho 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);