Bỏ qua đến nội dung chính
FreeOnlineTools Go
Tiếng Việt
Giải thích

Mã hóa URL Là Gì? Giải thích Đầy đủ về Percent-encoding

Bởi FreeOnlineTools Team · Đã cập nhật 2026-09-02

Trả lời nhanh

URL encoding (percent-encoding) thay thế ký tự unsafe trong URL bằng % theo sau hai chữ số hex. Ví dụ, khoảng trắng thành %20, & thành %26. Nó đảm bảo URL có thể truyền không ambiguity. Dùng URL Encoder và Decoder miễn phí.

Giới thiệu

URL encoding, còn gọi percent-encoding, là cơ chế mã hóa ký tự đặc biệt trong URL để chúng có thể truyền an toàn qua internet. URL chỉ chứa tập ký tự ASCII giới hạn —chữ cái, chữ số và vài ký tự reserved. Bất kỳ ký tự nào khác (khoảng trắng, quote, chữ phi-ASCII) phải được mã hóa as dấu phần trăm (%) theo sau hai chữ số hex. URL encoding được định nghĩa bởi RFC 3986.

Từng bước một

  1. Hiểu những ký tự nào cần mã hóa

    Các ký tự không được đặt trước (A-Z, a-z, 0-9, -, _, ., ~) không cần mã hóa. Các ký tự dành riêng (:, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, =) có ý nghĩa đặc biệt trong URLs và phải được mã hóa khi được sử dụng làm dữ liệu. Tất cả các ký tự khác (dấu cách, dấu ngoặc kép, không phải ASCII) phải được mã hóa.

  2. Tìm hiểu cơ chế mã hóa

    Mỗi ký tự cần mã hóa sẽ được chuyển đổi thành chuỗi byte UTF-8, sau đó mỗi byte được biểu thị dưới dạng %XX trong đó XX là giá trị hex. Khoảng trắng (0x20) → %20. Ký tự không phải ASCII 'é' (UTF-8: 0xC3 0xA9) → %C3%A9.

  3. Phân biệt EncodeURI và EncodeURIComponent

    EncodeURI() mã hóa URL đầy đủ nhưng vẫn giữ nguyên các ký tự dành riêng (:/?&=) là một phần của cấu trúc URL. EncodeURIComponent() mã hóa mọi thứ ngoại trừ các ký tự không được đặt trước - sử dụng nó cho các giá trị tham số truy vấn trong đó các ký tự dành riêng là dữ liệu, không phải cấu trúc.

  4. Giải mã được mã hóa phần trăm URLs

    Giải mã đảo ngược mã hóa: %20 → dấu cách, %C3%A9 → é. Sử dụng giải mãURI() cho URLs đầy đủ và giải mãURIComponent() cho các giá trị tham số truy vấn. Lỗi ném các chuỗi thoát không hợp lệ (như %ZZ).

Ví dụ

Mã hóa một khoảng trắng

đầu vào: hello world

đầu ra: hello%20world

Mã hóa văn bản không phải ASCII

đầu vào: café

đầu ra: caf%C3%A9

Mã hóa giá trị tham số truy vấn

đầu vào: name=John Doe & Co.

đầu ra: name%3DJohn%20Doe%20%26%20Co.

Các vấn đề thường gặp

  • Mã hóa toàn bộ URL khi chỉ các giá trị cần mã hóa —mã hóa các giá trị tham số truy vấn chứ không phải cấu trúc URL (://?&=).
  • Mã hóa kép —nếu URL đã được mã hóa, mã hóa lại sẽ tạo ra %2520 thay vì %20. Giải mã trước nếu không chắc chắn liệu nó đã được mã hóa chưa.
  • Sử dụng mã hóaURI và mã hóaURIComponent không chính xác —encodeURI giữ nguyên URL ký tự cấu trúc; EncodeURIComponent mã hóa chúng. Sử dụng cái sau cho các giá trị tham số truy vấn.
  • Các chuỗi thoát không hợp lệ —%ZZ hoặc một % ở cuối không hợp lệ và sẽ đưa ra lỗi khi giải mã.

Mẹo

  • Luôn mã hóa các giá trị tham số truy vấn có thể chứa dấu cách, ký tự đặc biệt hoặc thông tin đầu vào của người dùng để ngăn việc chèn URL.
  • Sử dụng EncodeURIComponent() cho các giá trị tham số truy vấn và EncodeURI() cho URLs đầy đủ chỉ cần mã hóa các ký tự không an toàn.
  • Mã hóa URL không phải là mã hóa —bất kỳ ai cũng có thể giải mã nó. Không bao giờ sử dụng nó để ẩn dữ liệu nhạy cảm.
  • Sử dụng Bộ mã hóa và giải mã URL của chúng tôi để chuyển đổi tức thì, riêng tư trong trình duyệt của bạn.

Công cụ liên quan

Hướng dẫn liên quan

Tài liệu tham khảo