Công Cụ Này Là Gì?
Mã hóa URL (percent encoding) thay các ký tự không được phép trong URL bằng dấu % theo sau là giá trị byte của chúng ở hệ hex — khoảng trắng thành %20, và 你 thành %E4%BD%A0. Nếu không mã hóa, các ký tự như khoảng trắng, &, ? và văn bản không phải ASCII sẽ phá vỡ cấu trúc URL hoặc bị máy chủ hiểu sai.
Có hai nhu cầu phổ biến, và công cụ này hỗ trợ cả hai: mã hóa một giá trị đưa vào bên trong tham số truy vấn (chế độ component — mã hóa cả / ? & = ), và mã hóa toàn bộ URL trong khi vẫn giữ cấu trúc (chế độ full-URL — giữ nguyên :// ? & ).
Tại Sao Nên Dùng?
- Xây dựng query string an toàn — dữ liệu người dùng nhập chứa &, = hay khoảng trắng sẽ không phá vỡ URL của bạn.
- Giải mã các URL đã mã hóa dài từ log, phân tích hay chuỗi chuyển hướng để xem chúng thực sự nói gì.
- Xử lý UTF-8 chính xác cho tiếng Trung, emoji và văn bản không phải ASCII khác.
- Hai chế độ để bạn không vô tình mã hóa nhầm dấu : và / của cả một URL.
- Miễn phí, tức thì, không tải lên.
Cách Sử Dụng
- Dán văn bản hoặc URL của bạn vào ô nhập.
- Chọn chế độ: "Component" cho giá trị đưa vào tham số truy vấn, "Full URL" cho toàn bộ URL.
- Bấm "Encode" (Mã hóa) hoặc "Decode" (Giải mã).
- Sao chép kết quả.
Ví dụ
Đầu vào
https://example.com/search?q=hello world & 你好Đầu ra
Chế độ Component: https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world%20%26%20%E4%BD%A0%E5%A5%BD
Chế độ Full URL: https://example.com/search?q=hello%20world%20&%20%E4%BD%A0%E5%A5%BDChế độ component mã hóa cả các ký tự cấu trúc; chế độ full-URL giữ nguyên chúng.
Các trường hợp sử dụng phổ biến
- Xây dựng một URL có thể chia sẻ, trong đó từ khóa tìm kiếm hay giá trị bộ lọc đến từ dữ liệu người dùng nhập và có thể chứa khoảng trắng, & hay ký tự đặc biệt khác.
- Giải mã một URL theo dõi hoặc chuyển hướng dài từ email hay chiến dịch quảng cáo để xem đích đến và tham số thực sự trước khi nhấp vào.
- Gỡ lỗi tại sao một tham số truy vấn không được máy chủ đọc đúng — thường thủ phạm là một ký tự dành riêng lẽ ra phải được mã hóa nhưng lại không được.
- Chuẩn bị một giá trị không phải tiếng Anh (tiếng Trung, Nhật, Ả Rập, v.v.) để dùng trong query string của URL.
encodeURIComponent so với encodeURI, trong thực tế
Hai hàm này ánh xạ trực tiếp với hai chế độ của công cụ này và tương ứng với các hàm JavaScript thật mà lập trình viên đã quen thuộc: encodeURIComponent (chế độ component) mã hóa mọi thứ trừ một số ít ký tự không dành riêng, giúp an toàn cho bất kỳ giá trị đơn lẻ nào chèn vào URL — đây là hàm dùng cho tham số truy vấn, đoạn đường dẫn, hay giá trị hash fragment. encodeURI (chế độ full-URL) giữ nguyên các ký tự cấu trúc của URL (:, /, ?, #, &, =) vì nó giả định bạn đang mã hóa cả một URL đã có cấu trúc, không phải một giá trị thô — dùng nó cho một tham số đơn lẻ sẽ không mã hóa được dấu & hay = mà giá trị đó có thể chứa, đây là lỗi phổ biến nhất khi chọn nhầm chế độ.
Ký tự dành riêng và không dành riêng
Đặc tả URL (RFC 3986) chia ký tự thành hai nhóm: ký tự không dành riêng (chữ cái, chữ số, - _ . ~) luôn an toàn và không bao giờ cần mã hóa, trong khi ký tự dành riêng (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) có ý nghĩa đặc biệt trong cấu trúc URL và chỉ cần mã hóa khi chúng xuất hiện như dữ liệu thực tế thay vì dấu câu cấu trúc. Đây chính là lý do tồn tại hai chế độ — chế độ component coi ký tự dành riêng là dữ liệu cần bảo vệ, chế độ full-URL coi chúng là cấu trúc cần giữ nguyên. Hiểu sự phân biệt này hữu ích hơn nhiều so với việc học thuộc khi nào dùng chế độ nào, vì nó giải thích tại sao cùng một ký tự (như &) đôi khi được mã hóa và đôi khi không, tùy vào vai trò nó đang đóng trong URL cụ thể đó.
Câu Hỏi Thường Gặp
Khi nào nên dùng chế độ component, khi nào dùng chế độ full URL?
Dùng chế độ component (encodeURIComponent) khi mã hóa một giá trị đơn lẻ đưa vào bên trong tham số truy vấn — nó mã hóa cả /, ?, & và = để chúng không phá vỡ URL. Dùng chế độ full URL (encodeURI) khi mã hóa toàn bộ một URL hoàn chỉnh — nó giữ nguyên các ký tự cấu trúc để URL vẫn hoạt động.
Tại sao %20 xuất hiện thay vì + cho khoảng trắng?
Cả hai đều hợp lệ trong những ngữ cảnh khác nhau. %20 là mã hóa phần trăm phổ quát cho khoảng trắng; + chỉ mang nghĩa khoảng trắng bên trong query string dùng định dạng cũ application/x-www-form-urlencoded. Công cụ này dùng %20, hoạt động ở mọi nơi.
Tại sao giải mã báo lỗi?
Đầu vào chứa một chuỗi phần trăm không hợp lệ, ví dụ dấu % không theo sau bởi hai chữ số hex. Điều này thường xảy ra khi một URL bị cắt ngắn hoặc bị giải mã hai lần. Hãy sửa hoặc xóa chuỗi % bị lỗi đó.
Mã hóa kép (double encoding) là gì?
Mã hóa một văn bản đã được mã hóa từ trước: %20 trở thành %2520 vì bản thân % lại được mã hóa thành %25. Đây là lỗi thường gặp — nếu kết quả giải mã của bạn vẫn còn chứa mã %, hãy giải mã thêm một lần nữa.
Công cụ này có xử lý được chữ Trung Quốc và emoji không?
Có. Văn bản được mã hóa dưới dạng byte UTF-8, nên 你好 trở thành %E4%BD%A0%E5%A5%BD và giải mã lại hoàn hảo — đúng như cách các trình duyệt xử lý.