Cách sử dụng
- Chọn Mã hóa hoặc Giải mã.
- Chọn chế độ — Thành phần cho một giá trị tham số, URL đầy đủ để giữ cấu trúc URL, hoặc Biểu mẫu cho dữ liệu form HTML nơi dấu cách thành +.
- Dán văn bản của bạn. Kết quả cập nhật khi bạn gõ.
- Nếu đầu vào là một URL, giao thức, host, path và tham số truy vấn của nó được liệt kê bên dưới.
Giải thích tùy chọn
- Thành phần
- Mã hóa mọi ký tự trừ chữ, số và - _ . ~ — dùng cho giá trị tham số truy vấn hoặc một đoạn path. Khớp với encodeURIComponent, cùng ! ' ( ) * mà RFC 3986 giữ riêng.
- URL đầy đủ
- Giữ nguyên các ký tự tạo nên cấu trúc URL (: / ? # & =) và mã hóa dấu cách cùng ký tự ngoài ASCII. Khớp với encodeURI của JavaScript.
- Biểu mẫu
- application/x-www-form-urlencoded, dùng bởi form HTML. Dấu cách thành + thay vì %20; khi giải mã, + được chuyển lại thành dấu cách.
Ví dụ
| Đầu vào | Thành phần | URL đầy đủ | Biểu mẫu |
|---|---|---|---|
a b&c |
a%20b%26c |
a%20b&c |
a+b%26c |
café |
caf%C3%A9 |
caf%C3%A9 |
caf%C3%A9 |
https://x.com/?q=1 2 |
https%3A%2F%2Fx.com%2F%3Fq%3D1%202 |
https://x.com/?q=1%202 |
https%3A%2F%2Fx.com%2F%3Fq%3D1+2 |
Xây dựng URL kèm tham số
Khi bạn đưa dữ liệu người dùng vào một chuỗi truy vấn, hãy mã hóa từng giá trị riêng:
const url = `https://example.com/search?q=${encodeURIComponent(query)}&page=2`;
Mã hóa toàn bộ URL ở bước cuối sẽ để lại & và = chưa mã hóa trong giá trị và làm hỏng các tham số.
Câu hỏi thường gặp
%20 và + khác nhau ở điểm nào?
Cả hai có thể biểu diễn dấu cách, nhưng ở những vị trí khác nhau. %20 hoạt động ở mọi nơi trong URL; + chỉ có nghĩa là dấu cách trong chuỗi truy vấn khi gửi form. Trong path, + là dấu cộng theo nghĩa đen.
Vì sao văn bản của tôi bị mã hóa hai lần (%2520)?
Nó đã bị mã hóa hai lần — dấu % của %20 lại bị mã hóa thành %25. Hãy giải mã hai lần, và trong code của bạn hãy đảm bảo chỉ một lớp mã hóa giá trị.
Khi nào nên dùng encodeURI so với encodeURIComponent?
Dùng encodeURIComponent (chế độ Thành phần) cho từng giá trị tham số bạn chèn vào URL. Chỉ dùng encodeURI (URL đầy đủ) cho một URL hoàn chỉnh có thể chứa dấu cách hoặc ký tự ngoài ASCII.
Thông báo "malformed percent-encoding" nghĩa là gì?
Một dấu % không được theo sau bởi hai chữ số hex, hoặc các byte không tạo thành UTF-8 hợp lệ. Lỗi hiển thị vị trí của chuỗi sai đầu tiên.
Ký tự tiếng Trung được mã hóa trong URL ra sao?
Mỗi ký tự được chuyển thành các byte UTF-8 và mỗi byte được viết thành %XX, nên 中 thành %E4%B8%AD.
Quyền riêng tư
Công cụ này chạy hoàn toàn trong trình duyệt của bạn. Tệp và văn bản được xử lý ngay trên thiết bị và không bao giờ được tải lên máy chủ của chúng tôi.