Chuyển đổi miễn phí

Bộ mã hóa URL / Bộ giải mã

Mã hóa và giải mã các URL và thành phần URI ngay lập tức trong trình duyệt của bạn. Miễn phí, riêng tư và không cần tải lên.

Hoặc

Về công cụ này

Mã hóa URL (mã hóa phần trăm chính thức, được xác định trong RFC 3986) chuyển các ký tự có ý nghĩa đặc biệt trong URL — dấu cách, dấu gạch chéo, ký hiệu và dấu băm — sang dạng an toàn bằng cách sử dụng dấu phần trăm theo sau là chữ số thập lục phân. Ký tự khoảng trắng trở thành %20 (hoặc + trong ngữ cảnh được mã hóa biểu mẫu), ký hiệu và trở thành %26, v.v. Nếu không có mã hóa này, các ký tự đặc biệt sẽ được hiểu là cú pháp URL chứ không phải là dữ liệu bằng chữ, làm hỏng URL hoặc gây ra hành vi ngoài ý muốn.

Hai bảng mã liên quan nhưng khác biệt tồn tại. Mã hóa thành phần URL tiêu chuẩn sử dụng %-esscapes cho mọi thứ nằm ngoài bộ ký tự không được đặt trước: A-Z, a-z, 0-9, dấu gạch ngang, dấu gạch dưới, dấu chấm, dấu ngã. Biến thể được mã hóa biểu mẫu (application/x-www-form-urlencoded) còn xử lý khoảng trắng dưới dạng dấu cộng và sử dụng các quy tắc khác nhau cho một số ký tự khác. EncodeURIComponent của JavaScript sử dụng mã hóa thành phần nghiêm ngặt; EncodeURI sử dụng một hình thức dễ dãi hơn để bảo toàn các ký tự cấu trúc URL.

Công cụ này cung cấp cả mã hóa và giải mã. Chế độ mã hóa bao bọc từng ký tự yêu cầu thoát ở định dạng %HH; chế độ giải mã đảo ngược việc chuyển đổi. Cả hai đều chạy hoàn toàn trong trình duyệt của bạn bằng cách sử dụng các hàm URL JavaScript tích hợp, do đó không có dữ liệu nào được gửi đi bất cứ đâu.

Tại sao mã hóa hoặc giải mã URL

Bất kỳ lúc nào dữ liệu được đưa vào URL — tham số chuỗi truy vấn, phân đoạn đường dẫn chứa thông tin nhập của người dùng, mục tiêu chuyển hướng — cần phải mã hóa thích hợp. Việc không mã hóa sẽ tạo ra các URL bị hỏng khi các ký tự đặc biệt xuất hiện, rò rỉ ranh giới tham số cho chuỗi truy vấn (chuyển &x=1 thành một tham số riêng) hoặc bị máy chủ web chặn do yêu cầu không đúng định dạng.

Giải mã thì ngược lại: trích xuất dữ liệu gốc từ một URL được mã hóa. Thanh địa chỉ trình duyệt thường hiển thị URL ở dạng được mã hóa; giải mã cho thấy những gì thực sự được dự định. Việc ghi nhật ký, gỡ lỗi và phân tích bảo mật đều được hưởng lợi từ các URL được giải mã hiển thị các tham số và đường dẫn ban đầu.

Cách sử dụng

Dán một chuỗi, chọn hướng.

  1. Chọn mã hóa hoặc giải mã: Mã hóa bao bọc các ký tự không an toàn ở định dạng %HH. Giải mã đảo ngược %HH thoát trở lại ký tự chữ.
  2. Thêm văn bản đầu vào: Dán chuỗi để mã hóa hoặc giải mã. Để mã hóa, đây thường là giá trị bằng chữ có dấu cách, ký tự đặc biệt hoặc nội dung không phải ASCII. Để giải mã, đây là một URL hoặc thành phần URL chứa các ký tự thoát %HH.
  3. Chuyển đổi: Công cụ này áp dụng mã hóaURIComponent hoặc giải mãURIComponent. Đầu ra được mã hóa có thể nhúng vào URL một cách an toàn; đầu ra được giải mã là giá trị bằng chữ ban đầu.
  4. Sao chép hoặc tải xuống: Sử dụng kết quả bất cứ nơi nào bạn cần. Các giá trị được mã hóa phù hợp với URL; các giá trị được giải mã sẽ tiết lộ dữ liệu gốc.

Các trường hợp sử dụng phổ biến

Chi tiết kỹ thuật

EncodeURIComponent mã hóa mọi ký tự bên ngoài tập hợp không được đặt trước [A-Za-z0-9-_.~]. Dấu cách trở thành %20, dấu cộng trở thành %2B, dấu bằng trở thành %3D, v.v. Các ký tự bên ngoài ASCII trước tiên được mã hóa bằng UTF-8 và sau đó mỗi byte được thoát %.

EncodeURI dễ dãi hơn và dành cho các URL đầy đủ thay vì các thành phần. Nó không thoát khỏi /, ?, &, =, # và một vài ký tự khác vì những ký tự đó có ý nghĩa cú pháp URL. Để nhúng dữ liệu người dùng vào URL, EncodeURIComponent hầu như luôn là lựa chọn phù hợp.

giải mãURIComponent đảo ngược %-esscapes, xác thực rằng mỗi lần thoát được định dạng đúng và các byte kết quả tạo thành UTF-8 hợp lệ. Đầu vào không đúng định dạng sẽ gây ra lỗi thay vì tạo ra rác.

Thực tiễn tốt nhất

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

Những ký tự nào cần mã hóa URL?
Các ký tự dành riêng (&, =, ?, #, /, :, @) và các ký tự không an toàn (dấu cách, <, >, {, }, |, ^, ~, [, ], `) phải được mã hóa. Các ký tự chữ và số và -_.~ đều an toàn và không cần mã hóa.
Sự khác biệt giữa mã hóaURI và mã hóaURIComponent là gì?
EncodeURI mã hóa một URL đầy đủ nhưng vẫn giữ nguyên các ký tự dành riêng (://?#). EncodeURIComponent mã hóa mọi thứ ngoại trừ -_.!~*'() — sử dụng nó cho các giá trị tham số truy vấn. Công cụ này cung cấp cả hai chế độ.
Khoảng trắng được mã hóa trong URL như thế nào?
Các khoảng trắng có thể được mã hóa dưới dạng %20 (mã hóa phần trăm tiêu chuẩn) hoặc + (mã hóa biểu mẫu). %20 đúng cho đường dẫn URL, trong khi + được sử dụng trong chuỗi truy vấn từ biểu mẫu HTML. Công cụ này sử dụng %20 theo mặc định.
Tôi có thể mã hóa các ký tự Unicode không?
Đúng. Các ký tự Unicode đầu tiên được mã hóa thành byte UTF-8, sau đó mỗi byte được mã hóa theo phần trăm. Ví dụ: '日' trở thành %E6%97%A5 (ba byte UTF-8, mỗi byte được mã hóa phần trăm).
Tôi nên sử dụng EncodeURI hay EncodeURIComponent?
Hầu như luôn luôn mã hóaURIComponent. Chỉ sử dụng mã hóaURI nếu bạn có một URL hoàn chỉnh và muốn giữ nguyên cấu trúc của nó — thường hiếm vì bạn vẫn tạo URL từ các thành phần.
Dữ liệu của tôi có được tải lên máy chủ không?
Không. Việc mã hóa và giải mã URL diễn ra hoàn toàn trong trình duyệt của bạn.
Nó có xử lý biểu tượng cảm xúc Unicode không?
Đúng. Biểu tượng cảm xúc là các chuỗi UTF-8 nhiều byte; bộ mã hóa tạo ra một chuỗi byte thoát % để bộ giải mã tập hợp lại một cách chính xác trở lại biểu tượng cảm xúc ban đầu.
Điều gì sẽ xảy ra nếu đầu vào của tôi có các chuỗi trông giống %HH nhưng không thực sự được mã hóa?
Mã hóa biến mỗi % thành %25, sau đó áp dụng lại lối thoát cho phần còn lại. Giải mã đầu vào nghiêm ngặt sẽ gây ra lỗi khi thoát không đúng định dạng; các chuỗi trông mơ hồ có thể giải mã không chính xác.