Mã hóa & Giải mã URL
Percent-encode văn bản cho URL và query string, giải mã URL đã mã hóa, và tách bất kỳ URL nào thành các thành phần kèm tham số truy vấn đã giải mã.
Chạy trên trình duyệtKhông cần đăng kýKhông tải lên gì
Thành phần
Tham số truy vấn
Cách dùng Mã hóa / Giải mã URL
- Chọn Mã hóa hoặc Giải mã.
- Khi mã hóa, chọn Thành phần cho một giá trị truy vấn hoặc một đoạn đường dẫn, URL đầy đủ để giữ cấu trúc URL, hoặc Dữ liệu form cho
application/x-www-form-urlencoded. - Dán văn bản của bạn. Kết quả xuất hiện ngay lập tức; mã escape sai định dạng được báo kèm vị trí.
- Dán một URL hoàn chỉnh vào Phân tích URL để xem host, đường dẫn, fragment và mọi tham số truy vấn đã được giải mã.
Mã hóa URL là gì?
URL chỉ được chứa một tập ký tự ASCII giới hạn (RFC 3986). Mọi ký tự khác, bao gồm dấu cách, chữ cái có dấu như tiếng Việt và các ký tự có ý nghĩa đặc biệt như &, ? và #, được viết thành dấu phần trăm theo sau là hai chữ số hex cho mỗi byte UTF-8. Dấu cách trở thành %20 và é trở thành %C3%A9.
encodeURIComponent và encodeURI
| Hàm | Giữ nguyên | Dùng cho |
|---|---|---|
encodeURIComponent | A-Z a-z 0-9 - _ . ~ | Một giá trị truy vấn, một đoạn đường dẫn hoặc tên tham số |
encodeURI | Thêm cả : / ? # [ ] @ ! $ & ' ( ) * + , ; = | Cả một URL cần giữ nguyên cấu trúc |
Dùng encodeURI cho một giá trị truy vấn là lỗi kinh điển: dấu & bên trong giá trị không được escape, nên nó chia tham số làm hai. Chế độ Thành phần của công cụ này còn escape cả ! ' ( ) * để tuân thủ chặt chẽ RFC 3986.
%20 hay + cho dấu cách?
Trong đường dẫn, dấu cách phải là %20. Trong dữ liệu gửi từ form HTML (application/x-www-form-urlencoded) và nhiều query string, dấu cách được viết là +. Khi giải mã, bật Coi + là dấu cách cho dữ liệu form, và tắt khi dấu cộng thực sự có ý nghĩa, như trong jane+test@example.com.
Câu hỏi thường gặp
Vì sao tôi gặp lỗi “Mã escape sai định dạng” khi giải mã?
% phải có đúng hai chữ số hex. Dấu phần trăm thực, như trong “giảm 50%”, lẽ ra phải được mã hóa thành %25. Thông báo lỗi chỉ ra vị trí của chuỗi bị lỗi.“Chuỗi byte UTF-8 không hợp lệ” nghĩa là gì?
%E9 cho é thay vì %C3%A9), hoặc chuỗi bị cắt giữa một ký tự.Tôi nên mã hóa cả URL hay chỉ các tham số?
= và &. Mã hóa cả một URL hoàn chỉnh bằng chế độ thành phần sẽ escape cả :// và làm hỏng nó.Mã hóa hai lần có phải là vấn đề không?
%20 thành %2520. Nếu bạn thấy %25 theo sau là chữ số hex, giá trị có lẽ đã bị mã hóa hai lần. Hãy giải mã hai lần để lấy lại bản gốc.