Hướng dẫn sử dụng Mã hoá URL: cách dùng từng bước

Mã hoá và giải mã URL hoặc một phần của URL.

Ảnh minh hoạ hướng dẫn sử dụng Mã hoá URL trên Unoify

Chọn mã hoá hoặc giải mã, chọn mã hoá một thành phần hay cả URL, rồi dán nội dung: kết quả hiện ngay. Hỗ trợ tiếng Việt và emoji; dữ liệu không rời khỏi máy của bạn.

Mã hoá URL dùng để làm gì?

Mã hoá URL hoặc một phần của URL (encodeURIComponent, encodeURI) và giải mã %20, %E1%BB%87… về văn bản, hỗ trợ tiếng Việt và emoji. Báo rõ lỗi nằm ở đâu. Xử lý trong trình duyệt, không gửi lên máy chủ.

Cách sử dụng Mã hoá URL

  1. 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ụ".
  2. 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ó.
  3. 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.
  4. 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.

Giới hạn và quyền riêng tư

Công cụ xử lý dữ liệu ngay trong trình duyệt của bạn, nội dung không được gửi lên máy chủ. Giới hạn của công cụ: 1 MB.

Dùng thử ngay: Mã hoá URL.

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ông cụ liên quan