Mã hóa

URL Encode/Decode

Mã hóa và giải mã URL — các ký tự cần được escape trong liên kết và tham số query.

URL encoding (percent-encoding) replaces characters that aren't allowed in a URL — spaces, non-Latin letters, special characters — with %XX sequences, where XX is the hex code of the byte. This keeps links and query parameters from getting mangled in transit.

How to use it

Common uses

Things to keep in mind

Encode parameter values, not the whole URL at once — otherwise you'll also encode the separators you need (:, /, ?, &).

JavaScript's encodeURIComponent and encodeURI encode different character sets — the former is meant specifically for parameter values.

Bài viết về công cụ này: URL Encode/Decode: percent-encoding trong liên kết

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

Sự khác biệt giữa mã hóa Component và URI là gì?

Mã hóa Component (encodeURIComponent) thoát gần như tất cả ký tự dành riêng, phù hợp cho một tham số truy vấn hoặc đoạn đường dẫn đơn lẻ. Mã hóa URI (encodeURI) giữ nguyên các ký tự như / : ? & = vì nó dùng để mã hóa toàn bộ URL vốn đã có cấu trúc.

Mã hóa URL có giống Base64 không?

Không, chúng thường bị nhầm lẫn nhưng là hai kỹ thuật khác nhau. Mã hóa URL (percent-encoding) thay ký tự không an toàn bằng chuỗi %XX và giữ hầu hết văn bản ASCII dễ đọc, còn Base64 mã hóa lại toàn bộ đầu vào bằng một bảng chữ cái gọn — bạn sẽ dùng Base64 an toàn cho URL cho mục đích khác, như nhúng dữ liệu nhị phân vào URL.

Công cụ này có gửi URL của tôi tới máy chủ không?

Không. Việc mã hóa và giải mã diễn ra hoàn toàn trong trình duyệt của bạn, nên không có gì bạn dán vào đây được truyền đi đâu cả.

Mã hóa hai lần là gì và nhận biết nó ra sao?

Đây là lỗi xảy ra khi một chuỗi đã được mã hóa lại bị mã hóa thêm lần nữa — ký tự % tự biến thành %25, khiến %20 trở thành %2520. Dấu hiệu của vấn đề là các chuỗi dạng %25XX xuất hiện trong kết quả đã giải mã.

Vì sao dấu cách đôi khi được mã hóa thành +, đôi khi thành %20?

+ cho dấu cách là định dạng application/x-www-form-urlencoded, dùng trong form và chuỗi query. %20 là percent-encoding chuẩn theo RFC 3986, hợp lệ ở bất kỳ phần nào của URL.

Bài viết: Mã hóa

Base64: mã hóa để làm gì và hoạt động ra sao

Base64 biến dữ liệu nhị phân thành văn bản ASCII như thế nào và khi nào thực sự cần đến nó.

Base32: khác gì với Base64 và khi nào tiện hơn

Bảng chữ cái Base32 không phân biệt hoa thường và các trường hợp nó tiện hơn Base64.

HTML Entities: cách hiển thị ký tự đặc biệt an toàn

Vì sao các ký tự < > & cần được escape và điều đó giúp tránh hỏng mã HTML thế nào.

JWT: cấu trúc token và "giải mã" JWT nghĩa là gì

Header, payload và signature của JWT, và vì sao giải mã không giống với xác minh chữ ký.

Unicode Escape: chuỗi \uXXXX nghĩa là gì

Chuỗi kiểu \u0041 trong JSON và chuỗi JS đến từ đâu và chúng nghĩa là gì.

ROT13 và mật mã Caesar: thay thế ký tự đơn giản

Vì sao dịch 13 chữ cái khiến ROT13 tự nghịch đảo, và vì sao ngày nay người ta vẫn dùng nó.

Punycode: tên miền quốc tế hóa hoạt động thế nào trong DNS

Một tên miền chứa ký tự không phải Latinh trở thành dạng ASCII với tiền tố xn-- như thế nào.

Mã Morse: văn bản biến thành chấm và gạch ra sao

Nguyên lý mã hóa chữ cái thành chấm và gạch, và mã Morse còn được dùng ở đâu hiện nay.

Data URI: khi nào nên nhúng hình ảnh trực tiếp vào mã

Một Data URI nhúng nội dung tệp trực tiếp vào HTML hoặc CSS ra sao, và khi nào đáng làm vậy.

Gzip + Base64: nén dữ liệu để truyền dưới dạng văn bản

Vì sao dữ liệu nhị phân đã nén còn được mã hóa Base64 trước khi đưa vào trường văn bản.

XML Entities: escape ký tự trong tài liệu XML

Năm entity XML bắt buộc, thiếu chúng tài liệu sẽ hỏng khi phân tích cú pháp.