Bộ mã hóa URL
Biến văn bản thành dạng an toàn để dùng trong URL.
Chạy ngay trên trình duyệt. Không có gì bạn nhập vào bị gửi đi đâu cả.
- Chế độ component hoặc full URI
- Tùy chọn dùng + cho dấu cách
- Hoạt động offline
Cách mã hóa URL
- Dán văn bản hoặc URL.
- Chọn mã hóa component cho một giá trị đơn, hoặc full URI cho cả một địa chỉ.
- Sao chép kết quả đã mã hóa.
Những gì được mã hóa
| Ký tự | Có mã hóa? | Ví dụ |
|---|---|---|
| Chữ cái và chữ số | Không | a-z, A-Z, 0-9 giữ nguyên |
| - _ . ~ | Không | Giữ nguyên ở cả hai chế độ |
| Dấu cách | Có | %20, hoặc + khi bật tùy chọn |
| / ? # & = | Chỉ ở chế độ component | Chế độ full URI giữ nguyên các ký tự này |
Chế độ component so với chế độ full URI
| Chế độ | Có mã hóa / ? # & = | Dùng cho |
|---|---|---|
| Component | Có | Một giá trị query hoặc đoạn đường dẫn |
| Full URI | Không | Một địa chỉ hoàn chỉnh bạn sắp dùng nguyên trạng |
Khi nào bạn cần percent-encoding
- Một giá trị query string chứa dấu cách hoặc ký tự đặc biệt, như một từ khóa tìm kiếm.
- Văn bản không phải ASCII trong URL, như chữ có dấu hoặc chữ viết khác, sau khi đã chuyển thành byte UTF-8.
- Dựng một link chuyển hướng hoặc callback mang theo một URL đầy đủ khác bên trong một tham số.
Câu hỏi thường gặp về Mã hóa URL
Khác biệt giữa mã hóa component và full URI là gì?
Mã hóa component escape mọi ký tự đặc biệt, kể cả / và &, để dùng bên trong một tham số query. Mã hóa full URI giữ nguyên các ký tự cấu trúc URL như :, / và ?, vì chúng là một phần của một địa chỉ hợp lệ.
Khi nào nên dùng + cho dấu cách?
Chỉ khi gửi form kiểu cổ điển (application/x-www-form-urlencoded), nơi dấu cách được viết thành + thay vì %20.
Những ký tự nào được mã hóa?
Chữ cái, chữ số và - _ . ~ được giữ nguyên. Mọi ký tự khác thành dấu phần trăm theo sau bởi mã hex hai chữ số.
Công cụ này có theo chuẩn web nào không?
Có. RFC 3986 định nghĩa những ký tự URI nào được dành riêng và cách percent-encode phần còn lại. Công cụ này dùng encodeURIComponent và encodeURI có sẵn của JavaScript, cả hai đều tuân theo chuẩn đó.
Chữ có dấu hoặc emoji được mã hóa thế nào?
Chúng được chuyển thành byte UTF-8 trước, rồi mỗi byte viết thành %XX. Chữ e có dấu sắc sẽ thành %C3%A9, vì nó chiếm hai byte UTF-8.
Tôi có thể mã hóa cả một địa chỉ, kể cả https://, không?
Hãy dùng chế độ full URI. Nó giữ nguyên scheme, host và dấu / ngăn cách các đoạn đường dẫn, chỉ mã hóa những ký tự không bao giờ an toàn ở bất kỳ đâu trong URL.
Mã hóa có làm thay đổi chữ cái và chữ số không?
Không. A-Z, a-z và 0-9 không bao giờ bị mã hóa ở cả hai chế độ, vì chúng luôn an toàn khi dùng trực tiếp trong URL.
Khác biệt giữa hai hàm JavaScript đứng sau công cụ này là gì?
Chế độ component dùng encodeURIComponent, escape mọi thứ trừ các ký tự không dành riêng, dành cho một giá trị như một tham số query. Chế độ full URI dùng encodeURI, cũng giữ nguyên các ký tự cấu trúc URL dành riêng, vì nó giả định đầu vào là một địa chỉ hoàn chỉnh.