Chuyển đến nội dung chính

Cách giải mã một chuỗi đã mã hóa URL

Giải mã đảo ngược mã hóa phần trăm: mỗi chuỗi %XX trở thành một byte, rồi các byte được đọc như văn bản UTF-8. Chế độ Thành phần dùng decodeURIComponent(), nên kết quả đúng bằng giá trị ban đầu.

Ví dụ minh họa

Chuỗi UTF-8 nhiều byte trở thành một ký tự duy nhất.

Đầu vào
caf%C3%A9%20%26%20cr%C3%A8me
Kết quả · decodeURIComponent()
café & crème

%20 trở thành dấu cách, nhưng + vẫn được giữ là dấu cộng.

Đầu vào
a+b%20c
Kết quả · decodeURIComponent()
a+b c

Chuỗi cuối cùng thiếu một chữ số thập lục phân, nên công cụ báo lỗi.

Đầu vào
%E0%A4%A
Kết quả · decodeURIComponent()
URL đã mã hóa không hợp lệ

Khi bổ sung chữ số còn thiếu, ba byte được giải mã thành một chữ cái Devanagari.

Đầu vào
%E0%A4%A4
Kết quả · decodeURIComponent()
त

Cách công cụ xử lý

  • Mỗi chuỗi %XX là một byte, và các byte liên tiếp được giải mã cùng nhau theo UTF-8, nên %C3%A9 trở thành é.
  • Dấu cộng không được coi là dấu cách: + vẫn là +. Nếu văn bản đến từ biểu mẫu HTML, hãy thay + bằng %20 trước khi giải mã.
  • Nếu có chuỗi nào chưa đầy đủ hoặc không phải UTF-8 hợp lệ, toàn bộ đầu vào bị từ chối kèm thông báo lỗi; không có phần nào được giải mã dở dang.
  • Chế độ URL đầy đủ (decodeURI) giữ nguyên dạng mã hóa của các ký tự dành riêng như %26, %2F và %3F để không làm thay đổi cấu trúc URL.

Hướng dẫn mã hóa URL