fixmint
VI

Mã hóa phần trăm trong URL: %20, + và %2F thực sự nghĩa là gì

Tác giả: · · cập nhật 8 tháng 11, 2026 · 5 phút đọc

Mã hóa phần trăm ghi một ký tự mà URL không thể mang an toàn thành dấu phần trăm, theo sau là mã byte của ký tự đó ở dạng hexa. Khoảng trắng thành %20, dấu và thành %26, dấu gạch chéo thành %2F. Cách mã hóa này bảo vệ cấu trúc của liên kết, vì các ký tự như & và = dùng để phân tách các phần của chuỗi truy vấn.

Mã hóa và giải mã URLURL đầy mã %20 khó đọcDùng miễn phí

Ký tự nào có thể giữ nguyên

Chuẩn URI (RFC 3986), nền tảng của mọi URL, cho phép một số ký tự đứng yên: các chữ cái A đến Z và a đến z, các chữ số, và bốn dấu - _ . ~. Những ký tự này không bao giờ cần mã hóa. Các ký tự khác có vai trò riêng trong URL. Dấu hai chấm tách phần giao thức khỏi phần còn lại, dấu gạch chéo phân tách các đoạn đường dẫn, dấu hỏi bắt đầu phần truy vấn, dấu thăng bắt đầu phần neo, còn & và = chia truy vấn thành tên và giá trị. Một ký tự có vai trò cấu trúc phải được mã hóa khi bạn muốn dùng nó như dữ liệu.

Vì vậy, cùng một ký tự có thể được mã hóa ở chỗ này nhưng không ở chỗ khác. Trong giá trị truy vấn, dấu và phải là %26, nếu không liên kết sẽ bị tách sai chỗ. Trong đường dẫn của liên kết, nó chỉ là một ký tự bình thường.

Chữ cái không thuộc tiếng Anh

Chữ cái ngoài bảng chữ tiếng Anh cơ bản được mã hóa thành các byte UTF-8, mỗi byte được viết dưới dạng mã phần trăm. Chữ é trong café là hai byte C3 và A9, nên thành %C3%A9, và cả từ thành caf%C3%A9.

Một ví dụ đơn giản giúp làm rõ quy tắc. Đoạn a b&c=d/é, khi mã hóa theo kiểu thành phần, sẽ thành a%20b%26c%3Dd%2F%C3%A9. Mọi ký tự không phải chữ cái, chữ số hay dấu an toàn đều được mã hóa: khoảng trắng, dấu và, dấu bằng, dấu gạch chéo và chữ cái có dấu.

Mã hóa thành phần hay cả URL

Có hai kiểu mã hóa vì một lý do. Mã hóa thành phần coi mọi ký tự dành riêng là dữ liệu. Dùng nó cho một giá trị đơn lẻ, như từ khóa tìm kiếm hoặc tên tệp nằm trong liên kết. Mã hóa “rock & roll” làm từ khóa tìm kiếm sẽ cho rock%20%26%20roll, nên dấu và vẫn nằm trong giá trị.

Mã hóa cả URL giữ nguyên cấu trúc. Mã hóa https://example.com/a b cho https://example.com/a%20b, còn dấu hai chấm và dấu gạch chéo được giữ nguyên. Dùng kiểu này cho một địa chỉ hoàn chỉnh cần được làm cho hợp lệ, không dùng cho giá trị nằm trong liên kết.

Công cụ URL có cài đặt Thành phần và URL đầy đủ vì lý do này. Giải mã URL đầy đủ cũng giữ lại các ký tự cấu trúc đã được mã hóa như %26 và %3D, nên liên kết vẫn hoạt động sau khi giải mã.

Dấu cộng và dữ liệu form

Form web dùng một quy ước khác. Khi form được gửi dưới dạng dữ liệu form, khoảng trắng được ghi là + thay vì %20. Khi đó, dấu cộng thật được ghi là %2B. Vì vậy cụm C++ tips thành C%2B%2B+tips trong dữ liệu form, và C%2B%2B%20tips khi mã hóa thành phần thông thường.

Giải mã cũng có cùng sự khác biệt. Trong chuỗi truy vấn, + thường có nghĩa là khoảng trắng. Trong đường dẫn của liên kết, + là dấu cộng. Công cụ chỉ coi + là khoảng trắng khi đánh dấu chọn Dùng + cho khoảng trắng (dữ liệu form), nên hãy bỏ chọn khi xử lý đường dẫn và những chỗ mà dấu cộng là dấu cộng thật.

Đọc một chuỗi truy vấn dài

Liên kết thường mang các thiết lập của nó sau dấu hỏi. Xem ví dụ này:

https://shop.example/search?q=red%20shirt&size=M&tag=summer%2Bsale

Sau khi giải mã, nó cho biết tìm kiếm áo đỏ, kích cỡ M, và thẻ là summer+sale. %2B vẫn là dấu cộng vì nó đã được mã hóa. Dán liên kết vào Công cụ URL, công cụ sẽ liệt kê từng tên và giá trị sau khi giải mã, giúp một liên kết dài dễ đọc hơn. Nếu bạn chỉ muốn địa chỉ ngắn hơn, không có các thiết lập theo dõi, hãy làm sạch liên kết trước.

Mã hóa hai lần

Lỗi phổ biến nhất là mã hóa một giá trị hai lần. Mã hóa lại chuỗi %20 cho %2520, vì chính dấu phần trăm cũng được mã hóa thành %25. Khi đó trang sẽ tìm chuỗi %20 theo đúng nghĩa đen trong giá trị, và kết quả tìm kiếm hoặc trang không khớp. Hãy giải mã liên kết một lần, kiểm tra kết quả, và chỉ mã hóa giá trị khi thực sự cần.

Chuỗi thoát bị lỗi

Dấu phần trăm phải đi kèm hai chữ số hexa, và các chữ số này phải tạo thành UTF-8 hợp lệ đối với chữ cái có dấu. Một liên kết bị cắt ngắn, hoặc một dấu phần trăm gõ nhầm trong văn bản, có thể để lại chuỗi thoát bị lỗi như %E0%A4%A. Công cụ giải mã những gì có thể, giữ nguyên các byte lỗi đúng như đã viết, và cho biết có bao nhiêu byte không giải mã được. Công cụ không dừng lại ở lỗi đầu tiên.

Các trường hợp đặc biệt

  • Khoảng trắng trong liên kết gõ tay. Thanh địa chỉ của trình duyệt tự mã hóa khoảng trắng cho bạn, nhưng liên kết được sao chép vào tài liệu vẫn có thể chứa khoảng trắng thô. Hãy mã hóa chúng trước khi gửi liên kết đi.
  • Tên miền không phải tiếng Anh. Những tên miền này dùng một hệ thống riêng là punycode, và việc mã hóa đường dẫn hay truy vấn không làm thay đổi tên máy chủ.
  • Nửa biểu tượng cảm xúc. Một bản sao bị hỏng có thể để lại một nửa surrogate đơn lẻ, không thể mã hóa. Công cụ thay nó bằng ký hiệu thay thế và cho bạn biết đã làm vậy.
  • Base64 trong liên kết. Giá trị Base64 trong liên kết tuân theo quy tắc riêng, với - và _ thay cho + và /. Xem Giải thích Base64.

Cách làm với fixmint

  1. Dán văn bản hoặc liên kết vào Văn bản hoặc URL.
  2. Chọn Mã hóa hoặc Giải mã, rồi chọn Thành phần cho một giá trị, hoặc URL đầy đủ cho cả địa chỉ.
  3. Đánh dấu Dùng + cho khoảng trắng (dữ liệu form) với liên kết được sao chép từ form web.
  4. Với liên kết, xem Tham số truy vấn, đã giải mã để thấy từng tên và giá trị.
  5. Sao chép kết quả.

Câu trả lời nhanh

%20 nghĩa là gì?

Một khoảng trắng. Giá trị byte của nó là 20 ở dạng hexa.

Vì sao trong liên kết của tôi có dấu + thay vì %20?

Liên kết có thể được lấy từ một form, nơi + đại diện cho khoảng trắng. Tùy chọn “Dùng + cho khoảng trắng (dữ liệu form)” sẽ giải mã nó.

Vì sao tôi thấy %2520 trong liên kết?

Giá trị đã bị mã hóa hai lần. Dấu phần trăm của %20 đã được mã hóa lại thành %25. Giải mã một lần để quay về %20, và thêm một lần nữa để có khoảng trắng.

Được dịch từ Bản tiếng Anh với sự hỗ trợ của AI.

Bình luận

    Chưa có bình luận nào. Hãy là người đầu tiên.

    Đánh giá của bạn (không bắt buộc)

    Email của bạn không bao giờ được hiển thị hoặc lưu lại.

    Bìa của How to Remain Valuable When Intelligence Becomes CheapHow to Remain Valuable When Intelligence Becomes Cheap

    224 trang về những lợi thế của con người, kinh tế và chiến lược vẫn khan hiếm khi AI có thể làm phần lớn công việc tư duy.

    $3.84Mua trên GumroadBản tiếng Anh