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 &lt; or &amp;. This tool encodes and decodes such entities right in your browser.

How to use it

Common uses

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ư &amp; dễ đọc hơn, còn thực thể dạng số như &#38; hoặc &#x26; (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.

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.

URL Encode/Decode: percent-encoding trong liên kết

Các ký tự đặc biệt trong địa chỉ và tham số trở thành chuỗi %XX như 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.