Mã hóa thực thể HTML
Chuyển văn bản thành thực thể HTML để các ký tự đánh dấu được giữ nguyên, ngay trong trình duyệt.
Chạy hoàn toàn trong trình duyệt của bạn. Không có gì được tải lên, ghi log hay lưu trữ.
Năm ký tự không thể xuất hiện nguyên dạng trong HTML mà không làm thay đổi ý nghĩa của mã đánh dấu: dấu và (&), hai dấu ngoặc nhọn và hai loại dấu nháy. Thoát chúng là điều biến một đoạn văn bản thành đoạn văn bản mà trình duyệt sẽ hiển thị thay vì làm theo.
Cách hoạt động
Chế độ tối thiểu chỉ thoát năm ký tự đó. Đây hầu như luôn là lựa chọn đúng: nếu trang của bạn là UTF-8 và các tệp là UTF-8, một chữ cái có dấu không cần thoát, và thoát nó chỉ khiến mã nguồn khó đọc hơn mà chẳng được gì.
Thực thể có tên thay thế mọi ký tự mà HTML 4.01 đặt tên — tổng cộng 252, é thành é, © thành ©. Hãy dùng chúng khi đầu ra phải đi qua thứ gì đó làm hỏng mọi ký tự ngoài ASCII, như một hệ thống email cũ hay một cột cơ sở dữ liệu có collation sai.
Tham chiếu số cho cùng sự bảo đảm theo điểm mã thay vì theo tên, nên chúng dùng được với mọi ký tự chứ không chỉ 252 ký tự có tên. Chúng được viết ở dạng thập lục phân kèm dấu chấm phẩy kết thúc, dạng mà trình phân tích nào cũng chấp nhận.
Ví dụ
| Trường hợp | Dữ liệu nhập | Kết quả |
|---|---|---|
| Một thẻ cần hiển thị, không phải thực thi | <script>alert(1)</script> | <script>alert(1)</script> |
| Một dấu & bên trong một giá trị | Tom & Jerry | Tom & Jerry |
| Một chữ cái có dấu, theo tên | café | café |
Câu hỏi thường gặp
Mã hóa ở đây có đủ để làm cho dữ liệu nhập của người dùng an toàn không?
Với văn bản nằm giữa các thẻ, và với giá trị thuộc tính nằm trong dấu ngoặc kép, thì có: dấu ngoặc kép cũng được thoát. Ở chỗ khác thì không: một giá trị đi vào URL, khối style hay khối script đều cần cách thoát riêng, và thực thể HTML là công cụ sai cho cả ba. Hãy thoát tại điểm xuất, theo ngữ cảnh của đầu ra đó, trong mã của bạn — chứ không phải bằng cách dán văn bản vào một trang web.
Sao dấu nháy đơn được mã hóa thành ' chứ không phải '?
' không có trong HTML 4.01. Nó được thêm vào XHTML rồi HTML5, và các trình duyệt cũ hiển thị nó nguyên văn. Dạng số thì luôn hoạt động ở mọi nơi.
Những thực thể có tên nào được hỗ trợ?
252 thực thể của HTML 4.01. HTML5 định nghĩa thêm khoảng hai nghìn thực thể nữa, phần lớn là ký hiệu toán học, và chúng không có ở đây. Mọi ký tự không có tên trong tập đó được giữ nguyên ở chế độ có tên, hoặc được mã hóa theo điểm mã ở chế độ số.
Có cần mã hóa chữ có dấu trên một trang web hiện đại không?
Không. Nếu trang khai báo UTF-8 và tệp được lưu dưới dạng UTF-8, é chỉ đơn giản là é. Thực thể có tên dùng để đưa văn bản đi qua các hệ thống không xử lý UTF-8 trọn vẹn.
Cần biết
- Mọi thứ diễn ra trong trình duyệt của bạn. Nội dung bạn dán không bị tải lên, không bị ghi log và không được lưu trữ.