tigtools

Mã hóa / giải mã URL

Mã hóa văn bản để dùng trong URL hoặc chuyển các mã như %20 trở lại thành văn bản dễ đọc. Chọn Thành phần cho một giá trị riêng lẻ hoặc URL đầy đủ cho toàn bộ địa chỉ.

Chạy ngay trên trình duyệt Không cần đăng ký

Chiều xử lý
Bạn đang mã hóa nội dung nào?

Component (encodeURIComponent) mã hóa mọi thứ ngoại trừ chữ cái, chữ số và - _ . ! ~ * ' ( ). Dùng chế độ này cho một giá trị truy vấn, trường biểu mẫu hoặc đoạn đường dẫn.

Cách sử dụng

  1. Chọn Mã hóa hoặc Giải mã.
  2. Chọn Thành phần cho một giá trị riêng lẻ (chẳng hạn một tham số truy vấn) hoặc URL đầy đủ cho toàn bộ địa chỉ.
  3. Nhập hoặc dán văn bản. Kết quả sẽ xuất hiện ngay ở bên phải (hoặc bên dưới trên điện thoại).
  4. Sao chép kết quả hoặc dùng “Dùng kết quả làm đầu vào” để đảo ngược thao tác và kiểm tra chuyển đổi hai chiều.

Cách hoạt động

URL chỉ có thể chứa một số lượng giới hạn ký tự ASCII. Các ký tự khác, bao gồm dấu cách, chữ có dấu và emoji, được biểu diễn bằng mã phần trăm: ký tự được chuyển thành các byte UTF-8, mỗi byte được viết thành % theo sau là hai chữ số thập lục phân. Dấu cách thành %20, é thành %C3%A9 và € thành %E2%82%AC.

Chế độ Thành phần sử dụng encodeURIComponent và decodeURIComponent của JavaScript. Chế độ này mã hóa mọi ký tự có ý nghĩa đặc biệt trong URL, bao gồm / ? # & = + : và @, để kết quả có thể được đặt an toàn bên trong giá trị truy vấn hoặc một đoạn đường dẫn. Chế độ này chỉ giữ nguyên các ký tự A–Z, a–z, 0–9 và - _ . ! ~ * ' ( ).

Chế độ URL đầy đủ sử dụng encodeURI và decodeURI. Chế độ này giả định đầu vào là một URL hoàn chỉnh và giữ nguyên các ký tự dành riêng ; , / ? : @ & = + $ # để địa chỉ vẫn hoạt động. Khi giải mã, decodeURI cũng giữ nguyên mã của các ký tự dành riêng đó: %2F vẫn là %2F, vì chuyển nó thành / sẽ làm thay đổi ý nghĩa của URL.

Tùy chọn dữ liệu biểu mẫu tuân theo application/x-www-form-urlencoded, định dạng trình duyệt dùng khi gửi biểu mẫu HTML: dấu cách được viết thành + thay vì %20. Khi giải mã bằng tùy chọn này, mọi dấu + đều trở thành dấu cách; dấu cộng thực phải được viết thành %2B.

Dữ liệu không hợp lệ sẽ không bao giờ bị loại bỏ. Nếu dấu % không có hai chữ số thập lục phân theo sau hoặc một chuỗi mã hóa không tạo thành UTF-8 hợp lệ, công cụ sẽ chỉ ra vị trí lỗi và giữ nguyên văn bản để bạn sửa.

Ví dụ

Đưa giá trị vào chuỗi truy vấn

Để tìm “Rock & Roll” tại https://example.com/search?q=…, hãy chỉ mã hóa giá trị bằng chế độ Thành phần: Rock%20%26%20Roll. Nếu không mã hóa, dấu & sẽ kết thúc tham số q và bắt đầu một tham số mới có tên “ Roll”.

Sửa URL có dấu cách và dấu tiếng Việt

Ở chế độ URL đầy đủ, https://example.com/menu/crème brûlée.html trở thành https://example.com/menu/cr%C3%A8me%20br%C3%BBl%C3%A9e.html. Dấu gạch chéo và dấu hai chấm được giữ nguyên nên liên kết vẫn hoạt động.

Đọc dữ liệu biểu mẫu trong nhật ký

Nhật ký máy chủ hiển thị name=Jane+Doe&city=S%C3%A3o+Paulo. Giải mã ở chế độ Thành phần và bật “Coi dấu + là dấu cách” để đọc được name=Jane Doe&city=São Paulo.

Câu hỏi thường gặp

encodeURI và encodeURIComponent khác nhau thế nào?

encodeURIComponent mã hóa các ký tự phân tách các phần của URL (/ ? # & = + : @ và các ký tự khác), nên phù hợp để dùng cho một phần của URL. encodeURI giữ nguyên các ký tự này, nên phù hợp để dùng cho URL hoàn chỉnh. Dùng encodeURI cho giá trị truy vấn là một lỗi phổ biến: dấu & hoặc = bên trong giá trị sẽ không được mã hóa và làm hỏng chuỗi truy vấn.

Dấu cách nên được viết là %20 hay +?

Trong đường dẫn URL, dấu cách luôn là %20. Trong chuỗi truy vấn, cả hai cách đều xuất hiện: %20 hợp lệ ở mọi nơi, còn + chỉ biểu thị dấu cách trong dữ liệu được mã hóa theo biểu mẫu (application/x-www-form-urlencoded), định dạng mà biểu mẫu HTML và nhiều framework máy chủ dùng để đọc chuỗi truy vấn. Nếu chưa chắc, hãy dùng %20.

Tại sao tôi gặp lỗi khi giải mã?

Giải mã sẽ thất bại nếu dấu % không có hai chữ số thập lục phân theo sau (ví dụ “giảm giá 50%”) hoặc nếu các byte đã mã hóa không phải UTF-8 hợp lệ. Trường hợp này thường có nghĩa là văn bản được mã hóa bằng bảng mã cũ như Latin-1 (é thành %E9 thay vì %C3%A9). Thông báo lỗi sẽ cho biết vị trí xảy ra lỗi.

Tại sao %2F không chuyển thành dấu gạch chéo trong chế độ URL đầy đủ?

decodeURI cố ý giữ nguyên mã của các ký tự dành riêng như / ? # & và =, vì giải mã chúng có thể làm thay đổi cách URL được chia thành các phần. Hãy dùng chế độ Thành phần để giải mã mọi mã.

Những ký tự nào không bao giờ được mã hóa?

Cả hai chế độ đều giữ nguyên A–Z, a–z, 0–9 và - _ . ! ~ * ' ( ). Chế độ URL đầy đủ còn giữ nguyên ; , / ? : @ & = + $ và #.

Quyền riêng tư

Việc mã hóa và giải mã diễn ra hoàn toàn trong trình duyệt bằng các hàm JavaScript tích hợp sẵn. Văn bản và URL của bạn không được tải lên, lưu trữ hoặc đưa vào dữ liệu phân tích.