Mã hóa URL
Mã hóa và giải mã các thành phần URL
Mã hóa URL / mã hóa phần trăm là gì?
URL chỉ có thể chứa một tập hợp nhỏ các ký tự ASCII. Mọi thứ khác — khoảng trắng, chữ cái có dấu, emoji, các ký tự được giữ lại như `&`, `=`, `?` — phải được mã hóa phần trăm dưới dạng `%` theo sau là hai chữ số hex đại diện cho các byte UTF-8. Một khoảng trắng trở thành `%20`, `é` trở thành `%C3%A9`, dấu hỏi trở thành `%3F`.
Sử dụng mã hóa 'thành phần' khi thoát một phần riêng lẻ (giá trị tham số truy vấn, một đoạn đường dẫn) — tương đương với `encodeURIComponent` của JavaScript. Sử dụng mã hóa 'toàn bộ URL' khi thoát một URL hoàn chỉnh đã có các dấu phân cách cấu trúc mà bạn muốn giữ lại — tương đương với `encodeURI`.
Trường hợp sử dụng
- Xây dựng chuỗi truy vấn — mã hóa phần trăm đầu vào của người dùng trước khi đưa vào các tham số `?q=`.
- Kiểm tra nhật ký máy chủ — giải mã các URL bị hỏng để đọc đường dẫn gốc (`/Users/%E4%B8%AD%E6%96%87/...`).
- Gỡ lỗi chuyển hướng OAuth — dán một `redirect_uri` để xem chính xác những gì callback OAuth đã giải mã.
- Đọc ví dụ curl — sao chép một URL mã hóa phần trăm từ một hướng dẫn và giải mã nó để hiểu yêu cầu.
Ví dụ
| Nhập | Kết quả |
|---|---|
| hello world & friends | hello%20world%20%26%20friends |
| café/menu?id=123 | caf%C3%A9%2Fmenu%3Fid%3D123 (component) or caf%C3%A9/menu?id=123 (full URL) |
Câu hỏi thường gặp
Sự khác biệt giữa encodeURI và encodeURIComponent là gì?
`encodeURI` giữ nguyên các ký tự cấu trúc URL (`:`, `/`, `?`, `#`, `&`, `=`) — dùng để mã hóa toàn bộ URL. `encodeURIComponent` mã hóa cả những ký tự đó — dùng để mã hóa một phần đơn lẻ đưa vào URL.
Nó có xử lý được ký tự ngoài ASCII không?
Có. Các ký tự ngoài ASCII được mã hóa thành các byte UTF-8 (1–4 byte), mỗi byte biểu diễn dưới dạng `%XX`.
Khi giải mã, `+` có được hiểu là khoảng trắng không?
Không. Công cụ này sử dụng giải mã URL tiêu chuẩn, để lại `+` không thay đổi. Quy tắc `+`-nghĩa-là-khoảng-trắng là cụ thể cho dữ liệu biểu mẫu `application/x-www-form-urlencoded`, và công cụ này không có chế độ giải mã biểu mẫu riêng biệt.
Tại sao URL của tôi bị hỏng sau khi mã hóa?
Bạn đã mã hóa các ký tự cấu trúc (`:`, `/`, `?`, `#`) mà cần giữ nguyên. Công cụ này luôn thực hiện mã hóa thành phần (`encodeURIComponent`), điều này sẽ thoát chúng — vì vậy chỉ mã hóa các giá trị truy vấn hoặc đoạn đường riêng lẻ, không phải toàn bộ URL.
Có gì được tải lên không?
Không — việc mã hóa và giải mã chạy hoàn toàn trong trình duyệt của bạn.
