Bộ mã hóa Thành phần URI
Nếu bạn từng truyền một giá trị như name=John & Jane vào một URL mà không mã hóa nó, bạn biết nỗi đau: dấu & bị đọc như một tham số mới và máy chủ thấy rác. Công cụ này mã hóa phần trăm mọi chuỗi để dùng an toàn như một thành phần URI theo RFC 3986, biến mỗi ký tự dành riêng thành một cặp %HH (gồm cả khoảng trắng). Dán một fragment, một giá trị truy vấn hay một đích chuyển hướng và nhận lại thứ an toàn để nối vào bất kỳ URL nào.
Cách mã hóa một thành phần URI
-
1
Dán giá trị của bạn
Thả vào một giá trị tham số truy vấn đơn, một đoạn đường dẫn hoặc một chuỗi fragment.
-
2
Chọn mã hóa hoặc giải mã
Đổi chiều để biến mã hóa phần trăm trở lại thành các ký tự gốc.
-
3
Chạy nó
Công cụ mã hóa UTF-8 từng ký tự, rồi thay mỗi byte dành riêng bằng %HH.
-
4
Sao chép kết quả
Thả kết quả trực tiếp vào mẫu URL hoặc client API của bạn.
Cái gì được thoát
Bộ mã hóa này tuân theo RFC 3986: chỉ tập không dành riêng được giữ nguyên, A-Z a-z 0-9 - _ . ~. Mọi thứ khác trở thành UTF-8 mã hóa phần trăm, gồm cả khoảng trắng và các ký tự phân tách phụ ! * ' ( ) mà encodeURIComponent của JavaScript sẽ để yên.
| Ký tự | Mã hóa thành |
|---|---|
| khoảng trắng | %20 |
! |
%21 |
# |
%23 |
& |
%26 |
' |
%27 |
( |
%28 |
) |
%29 |
* |
%2A |
+ |
%2B |
/ |
%2F |
= |
%3D |
? |
%3F |
é |
%C3%A9 |
Thành phần so với URI đầy đủ
Bộ mã hóa này nghiêm ngặt hơn encodeURI, vốn để yên : / ? # [ ] @ ! $ & ' ( ) * + , ; = vì các ký tự đó mang tính cấu trúc trong một URL. Với một giá trị bạn nối vào chuỗi truy vấn, bạn muốn dạng nghiêm ngặt, và đó chính xác là thứ công cụ này tạo ra: nó thậm chí thoát cả ! ' ( ) *, đi xa hơn một bước so với encodeURIComponent của JavaScript.
const url = `/search?q=${encodeURIComponent(userInput)}`;
Cạm bẫy thường gặp
- Mã hóa hai lần: mã hóa thứ đã được mã hóa cho bạn
%2520thay vì%20. Luôn giải mã trước nếu bạn không chắc về nguồn. - Dấu cộng trong biểu mẫu: việc gửi biểu mẫu HTML mã hóa khoảng trắng thành
+, không phải%20. Các bộ giải mã tuân thủ RFC 3986 nghiêm ngặt (gồm cả bộ này) sẽ không biến+trở lại thành khoảng trắng. Hãy dùng một bộ giải mã hiểu biểu mẫu cho những trường hợp đó. - Dấu phân tách đường dẫn: mã hóa
/ở đây biến nó thành%2F. Nếu bạn muốn giữ cấu trúc đường dẫn thật, hãy nối các đoạn trước rồi mã hóa từng đoạn riêng.
Câu hỏi thường gặp
Đây là mã hóa phần trăm theo RFC 3986, dạng nghiêm ngặt. Nó thoát :, /, ?, # và các ký tự dành riêng khác (cùng với !, ', (, ) và *) vì một thành phần không nên mang cấu trúc URL bên trong. Điều đó khiến nó nghiêm ngặt hơn encodeURIComponent của JavaScript và nghiêm ngặt hơn nhiều so với encodeURI.
%20 là cách của RFC 3986. + cho khoảng trắng là di sản từ mã hóa thân application/x-www-form-urlencoded. Với chuỗi truy vấn trong URL, %20 luôn an toàn; + chỉ được mong đợi ở máy chủ khi nó được tạo bởi một biểu mẫu POST.
Mỗi ký tự được mã hóa UTF-8 trước, rồi mỗi byte được thoát. Một ký tự như 日 thành %E6%97%A5 (ba byte).
Không. Giá trị được mã hóa phần trăm ở phía máy chủ để dựng kết quả của bạn và không được lưu trữ hay ghi nhật ký; không có gì bạn dán được giữ lại sau khi phản hồi được gửi đi.
Công cụ liên quan
Bảng tham chiếu ASCII
Bảng ASCII đầy đủ từ 0 đến 127 với giá trị thập phân, thập lục phân, bát phân, nhị phân và ký hiệu tham chiếu ký tự số HTML, gồm NUL, LF và DEL.
Tham chiếu ký tự HTML
Danh sách có thể tìm kiếm các thực thể HTML, mã tên và mã số tương ứng của chúng, cùng chức năng sao chép chỉ với một cú nhấp cho các ký tự đặc biệt và biểu tượng.
Bảng tham khảo phím tắt
Tìm phím tắt mặc định theo tài liệu của VS Code, Chrome và Bash dùng GNU Readline trên macOS, Windows và Linux.
Trình giải mã mã JavaScript (JavaScript Deobfuscator)
Giải mã mã JavaScript đã được rút gọn hoặc nén bằng cách đổi tên biến, giải mã chuỗi và mảng, đảo ngược cấu trúc dòng điều khiển và làm đẹp mã.
Chuyển đổi HTML sang BBCode
Chuyển đổi các đoạn mã HTML thành BBCode dành cho phpBB, vBulletin và các phần mềm diễn đàn khác không hỗ trợ định dạng HTML thô.
Trình chuyển ASCII sang Hex
Biến văn bản ASCII thành giá trị byte thập lục phân. Đầu ra dùng hai chữ số hex cho mỗi ký tự, sẵn sàng cho memory dump, packet trace hoặc bảng firmware.
Công cụ này có phiên bản bằng các ngôn ngữ khác
- Encoder Komponen URI [ID]
- Koder komponentu URI [PL]
- URI-komponentkodare [SV]
- ตัวเข้ารหัสองค์ประกอบ URI [TH]
- URI-Komponenten-Encoder [DE]
- URIコンポーネントエンコーダー [JA]
- URI 컴포넌트 인코더 [KO]
- Codificador de Componentes URI [ES]
- Codificador de Componentes URI [PT]
- Encodeur de composants URI [FR]
- مُرمِّز مكوّن URI [AR]
- URI-component-encoder [NL]
- URI Component Encoder [EN]
- Codificatore di componenti URI [IT]
- Кодировщик компонента URI [RU]
- URI Bileşeni Kodlayıcı [TR]
- URI 组件编码器 [ZH]