Mã hóa
HTML Entities Encode/Decode
Mã hóa và giải mã thực thể HTML — hiển thị an toàn các ký tự đặc biệt trên trang.
HTML entities are a way to write characters that would otherwise break markup (<, >, &) or have no keyboard key, as safe text sequences like < or &. This tool encodes and decodes such entities right in your browser.
How to use it
- Encode: paste text and characters like <, >, &, and quotes get replaced with their matching entities.
- Decode: paste HTML containing entities (&, ©, etc.) to see the plain text.
- Both named entities (&) and numeric ones (& or &) are supported.
Common uses
- Safely displaying user text (a comment, a message) on a page without risking broken markup or an injected script.
- Embedding HTML code samples in an article or documentation so the browser shows them as text instead of rendering them.
- Decoding content copied from another site where the characters arrived already entity-encoded.
Things to keep in mind
HTML entity escaping only protects against XSS via a page's text content — it does not protect a JavaScript context (innerHTML, eval) or href/src attributes containing unvalidated URLs.
Encode exactly at the point where text gets inserted into HTML, not ahead of time when saving to a database — otherwise the data gets mangled when reused outside an HTML context.
Bài viết về công cụ này: HTML Entities: cách hiển thị ký tự đặc biệt an toàn
Câu hỏi thường gặp
Sự khác biệt giữa thực thể HTML dạng tên và dạng số là gì?
Thực thể dạng tên như & dễ đọc hơn, còn thực thể dạng số như & hoặc & (thập phân hoặc hex) hoạt động với mọi ký tự, kể cả những ký tự không có tên riêng. Cả hai hiển thị giống hệt nhau trên trình duyệt.
Khi nào tôi thực sự cần mã hóa thực thể HTML?
Hãy mã hóa các ký tự như < > & " ' bất cứ khi nào chèn văn bản động hoặc do người dùng nhập vào mã HTML, để trình duyệt coi chúng là văn bản thay vì một phần của thẻ hay thuộc tính.
Sự khác biệt giữa chế độ "Cơ bản" và "Tất cả ký tự" là gì?
Chế độ Cơ bản chỉ thoát các ký tự có ý nghĩa cấu trúc trong HTML (như < > & " '), còn "Tất cả ký tự" cũng chuyển các ký tự ngoài ASCII khác thành thực thể số, hữu ích cho các trình phân tích cũ hoặc nghiêm ngặt.
Escape văn bản trong thuộc tính có khác gì so với trong nội dung trang?
Các ký tự cơ bản (<, >, &) được escape giống nhau, nhưng bên trong một thuộc tính đặt trong dấu ngoặc, việc escape đúng loại dấu ngoặc giới hạn thuộc tính đó là cực kỳ quan trọng — nếu không, giá trị sẽ "đứt" sớm hơn dự kiến.
Escape HTML có bảo vệ khỏi mọi loại XSS không?
Không. Nó chặn được vector phổ biến nhất — chèn văn bản vào nội dung HTML, nhưng không bảo vệ khỏi XSS qua ngữ cảnh JavaScript (ví dụ innerHTML rồi thực thi mã) hay URL chưa được kiểm tra trong href/src.