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.