Mã hóa và giải mã URL
Mã hóa phần trăm văn bản cho URL hoặc giải mã ngược lại, và tách bất kỳ URL nào thành các phần và tham số truy vấn.
Chạy hoàn toàn trong trình duyệt của bạn
Tách URL thành các phần
Tham số truy vấn
| # | Tên | Giá trị (đã giải mã) |
|---|
Văn bản tối đa khoảng 5 MB. Kết quả cập nhật khi bạn gõ.
Cách mã hóa hoặc giải mã URL
- Chọn Mã hóa hoặc Giải mã, rồi chọn văn bản là gì: một giá trị đơn lẻ (thành phần), một URL đầy đủ, hoặc dữ liệu biểu mẫu.
- Gõ hoặc dán văn bản của bạn. Kết quả hiện ra bên dưới khi bạn gõ; escape bị hỏng được báo kèm vị trí.
- Sao chép kết quả, hoặc dán một URL đầy đủ vào phần phân tích ở phía dưới để xem host, đường dẫn và các tham số truy vấn của nó.
Mã hóa URL làm gì
URL chỉ được chứa một tập hợp ký tự ASCII hạn chế, và một số trong đó có nhiệm vụ riêng: / phân tách các đoạn đường dẫn, ? bắt đầu phần truy vấn, & và = tách nó thành tên và giá trị, # bắt đầu phần fragment. Mã hóa phần trăm viết bất kỳ byte nào khác thành % theo sau là hai chữ số hex, nên một giá trị như R&D / 2026 có thể đi trong chuỗi truy vấn mà không bị nhầm với cấu trúc: R%26D%20%2F%202026.
Văn bản trước tiên được chuyển thành các byte UTF-8, đó là lý do một chữ có dấu thành hai escape và một emoji thành bốn. Giải mã đảo ngược quá trình và kiểm tra các byte có tạo thành UTF-8 hợp lệ không. Công cụ này giải mã bằng bộ đọc nghiêm ngặt của riêng nó, nên thay vì một lỗi chung chung "URI malformed", nó cho bạn biết escape nào bị hỏng và ở đâu.
Ba chế độ tương ứng với ba tình huống thường gặp. Hãy mã hóa một giá trị đơn lẻ (thành phần) khi bạn đang dựng một tham số truy vấn hoặc một đoạn đường dẫn. Chỉ mã hóa cả URL khi bạn có một địa chỉ hoàn chỉnh chứa dấu cách hoặc chữ cái không phải ASCII. Dùng dữ liệu biểu mẫu cho phần thân của một form post hoặc chuỗi truy vấn được dựng theo cách biểu mẫu HTML dựng.
Mẹo
- Cần một đường dẫn gọn gàng, dễ đọc thay vì các escape? Hãy tạo bằng Tạo slug từ văn bản.
- Dữ liệu nhị phân trong URL thường là Base64url chứ không phải mã hóa phần trăm: hãy thử Mã hóa và giải mã Base64.
- Một token trong chuỗi truy vấn bắt đầu bằng
eyJcó lẽ là JWT. Hãy đọc nó bằng Giải mã JWT.
Câu hỏi thường gặp
Mã hóa thành phần và mã hóa URL đầy đủ khác nhau thế nào?
Mã hóa thành phần (encodeURIComponent của JavaScript) escape mọi thứ trừ chữ cái, chữ số và - _ . ! ~ * ' ( ), nên các ký tự như / ? & = trở thành %2F %3F %26 %3D. Hãy dùng nó cho một giá trị truy vấn hoặc một đoạn đường dẫn. Mã hóa URL đầy đủ (encodeURI) giữ nguyên các ký tự tạo nên cấu trúc của URL và chỉ escape dấu cách, chữ cái không phải ASCII và vài ký tự khác, nên cả địa chỉ vẫn dùng được.
Khi nào tôi nên dùng mã hóa biểu mẫu?
Mã hóa biểu mẫu (application/x-www-form-urlencoded) là thứ mà biểu mẫu HTML gửi đi và hầu hết chuỗi truy vấn sử dụng. Nó viết dấu cách thành + và escape mọi thứ trừ chữ cái, chữ số và * - . _. Khi giải mã ở chế độ này, + được đọc là dấu cách; ở các chế độ khác nó vẫn là dấu cộng.
Chữ có dấu và emoji được mã hóa thế nào?
Dưới dạng các byte UTF-8, mỗi byte được viết bằng % cùng hai chữ số hex, đây là thứ trình duyệt và máy chủ mong đợi. Ví dụ é trở thành %C3%A9. Giải mã kiểm tra các byte có tạo thành UTF-8 hợp lệ không và báo cho bạn nếu không.
Tại sao giải mã báo lỗi?
Mỗi dấu phần trăm phải theo sau bởi hai chữ số hex (0-9, A-F). Một dấu % lẻ loi, một escape bị cắt cụt như %A, hoặc các byte không phải UTF-8 hợp lệ đều được báo kèm vị trí để bạn tìm ra. Nếu văn bản chứa một dấu phần trăm nguyên văn, nó phải được viết thành %25.
Trình phân tích URL có truy cập địa chỉ đó không?
Không. Nó dùng bộ phân tích URL tích hợp sẵn của trình duyệt để tách văn bản thành các phần; không có gì được tải về và không có gì được gửi đi đâu cả. Văn bản bạn gõ ở lại trong thẻ này.
Tôi có nên mã hóa cả URL nhiều hơn một lần không?
Không. Mã hóa văn bản đã được mã hóa biến %20 thành %2520, đây là một lỗi thường gặp. Nếu bạn thấy %25 theo sau bởi hai chữ số hex trong kết quả, đầu vào có lẽ đã được mã hóa rồi; hãy giải mã nó trước.