Cách sử dụng
- Chọn "Mã hoá" để chuyển văn bản hoặc URL thành dạng có %XX, hoặc "Giải mã" để chuyển ngược lại. Muốn thử nhanh, bấm "Ví dụ".
- Chọn phạm vi. "Thành phần URL" cho một giá trị bên trong URL (ví dụ nội dung của tham số q=…); "URL đầy đủ" cho cả địa chỉ, giữ nguyên cấu trúc của nó.
- Dán nội dung vào khung bên trên, hoặc bấm "Mở tệp". Kết quả hiện ngay ở khung "Kết quả" và cập nhật khi bạn gõ hay đổi tuỳ chọn.
- Bấm "Sao chép kết quả" ở đầu khung "Kết quả". Bấm nút mũi tên lên để đảo chiều: kết quả thành đầu vào và chế độ đổi theo, tiện để kiểm tra mã hoá rồi giải mã lại.
Mã hoá URL hoạt động thế nào
- URL chỉ chứa được một số ký tự ASCII. Mọi ký tự khác (dấu cách, chữ có dấu, emoji) được đổi sang byte UTF-8, mỗi byte viết thành %XX, ví dụ dấu cách là %20 và "ệ" là %E1%BB%87.
- "Thành phần URL" (như encodeURIComponent của JavaScript) mã hoá cả những ký tự có nghĩa trong URL: & ? # / = : @ $ , ;. Dùng khi nhét một giá trị vào URL, để giá trị đó không làm hỏng cấu trúc. Ví dụ "a&b=c" thành a%26b%3Dc.
- "URL đầy đủ" (như encodeURI) giữ nguyên các ký tự trên và chỉ mã hoá phần còn lại. Dùng khi bạn có cả địa chỉ với dấu cách hay chữ có dấu: https://example.com/tìm kiếm?q=1 thành https://example.com/t%C3%ACm%20ki%E1%BA%BFm?q=1.
- Cả hai phạm vi đều không mã hoá chữ cái, chữ số và các ký tự - _ . ! ~ * ' ( ). Dấu cách luôn là %20, không bao giờ là dấu +.
- Khi giải mã, dấu + được giữ nguyên là +. Dấu + chỉ nghĩa là dấu cách trong dữ liệu của biểu mẫu HTML, không phải trong URL. Ở phạm vi "URL đầy đủ", các mã của ký tự cấu trúc (%2F, %3F, %23, %26…) cũng được giữ nguyên để không làm đổi cấu trúc của URL.
- Có hai kiểu lỗi khi giải mã. Một là dấu % không theo sau bởi đúng 2 chữ số hệ 16 (ví dụ "100%" hay "%E0%A4%A"). Hai là các mã đúng dạng nhưng ghép lại không phải văn bản UTF-8 (ví dụ "%FF"). Công cụ nêu đúng đoạn và vị trí, và không tự sửa.
- Công cụ chỉ xử lý văn bản: URL bạn nhập không bao giờ được mở, tải hay truy cập.
Câu hỏi thường gặp
URL của tôi có bị gửi lên máy chủ hoặc được mở không?
Không. Mã hoá và giải mã chạy bằng JavaScript ngay trong trình duyệt. Công cụ chỉ xử lý URL như một đoạn văn bản: nó không mở, không tải và không truy cập địa chỉ đó, cũng không gửi đi hay lưu lại ở đâu.
Khác nhau giữa "Thành phần URL" và "URL đầy đủ" là gì?
"Thành phần URL" mã hoá cả những ký tự có nghĩa trong URL như & ? # / =, dùng cho một giá trị đặt vào URL. "URL đầy đủ" giữ nguyên các ký tự đó và chỉ mã hoá phần còn lại, dùng cho cả địa chỉ. Nếu mã hoá cả URL bằng "Thành phần URL" thì https:// sẽ thành https%3A%2F%2F và URL không dùng được nữa.
Vì sao dấu cách thành %20 mà không phải dấu +?
Trong URL, dấu cách đúng chuẩn là %20. Dấu + chỉ là dấu cách trong dữ liệu biểu mẫu HTML (application/x-www-form-urlencoded). Công cụ này theo chuẩn URL; khi giải mã, dấu + vẫn là dấu +.
Vì sao giải mã báo "không phải dạng %XX"?
Có một dấu % mà sau đó không phải 2 chữ số hệ 16 (0-9, A-F), thường do chuỗi bị cắt dở hoặc có một dấu % thật (như "100%") chưa được mã hoá thành %25. Công cụ chỉ ra đoạn lỗi và vị trí, nhưng không tự sửa vì sửa có thể làm đổi nội dung.
Vì sao báo "không phải văn bản UTF-8"?
Các mã %XX đều đúng dạng nhưng ghép lại không thành chữ UTF-8 hợp lệ, ví dụ một byte lẻ như %FF, hoặc một ký tự bị cắt giữa chừng. Dữ liệu cũ mã hoá theo bảng mã khác (như Windows-1258) cũng gặp lỗi này.
Có giới hạn độ dài không?
Có, tối đa 1 MB (đo theo UTF-8) cho cả đầu vào lúc mã hoá và giải mã. Vượt giới hạn thì không xử lý thay vì cắt bớt âm thầm; hãy chia nhỏ rồi làm từng phần.
Vì sao nút "Sao chép kết quả" báo không thể sao chép?
Trình duyệt có thể chặn quyền ghi vào bộ nhớ tạm (clipboard). Khi đó kết quả được chọn sẵn: nhấn Ctrl+C (hoặc ⌘+C trên Mac) để sao chép.