tigtools

Mã hóa / giải mã thực thể HTML

Làm cho văn bản an toàn khi đặt trong HTML hoặc chuyển các thực thể như & và é về ký tự thông thường.

Chạy ngay trên trình duyệt Không cần đăng ký

Chiều chuyển đổi

& < > " và ' luôn được escape. Các ký tự khác chỉ được chuyển đổi nếu bạn chọn tùy chọn cho ký tự ngoài ASCII.

Cách sử dụng

  1. Chọn Encode để làm văn bản an toàn khi dùng trong HTML, hoặc Decode để chuyển thực thể về ký tự.
  2. Khi mã hóa, hãy chọn giữ nguyên chữ có dấu và ký hiệu hay chuyển chúng thành thực thể.
  3. Nhập hoặc dán văn bản; kết quả được cập nhật ngay.
  4. Sao chép kết quả hoặc chọn “Dùng kết quả làm đầu vào” để kiểm tra xem văn bản có được giải mã về nội dung ban đầu hay không.

Cách hoạt động

Trong HTML, một số ký tự có ý nghĩa đặc biệt: < mở đầu thẻ, & mở đầu thực thể, còn " hoặc ' kết thúc giá trị thuộc tính. Để hiển thị chúng dưới dạng văn bản, cần viết dưới dạng tham chiếu ký tự: &lt; cho <, &gt; cho >, &amp; cho &, &quot; cho " và &#39; cho '. Dấu nháy đơn dùng dạng số vì &apos; không được định nghĩa trong HTML 4.

Có thể viết trực tiếp tất cả ký tự khác, bao gồm chữ có dấu, văn bản tiếng Trung và emoji, nếu trang được lưu và phân phát dưới dạng UTF-8, định dạng mặc định của các website hiện đại. Chỉ cần chuyển chúng thành thực thể khi dùng các hệ thống không hỗ trợ UTF-8 an toàn, chẳng hạn một số mẫu email hoặc cơ sở dữ liệu cũ. Khi đó, bạn có thể chọn thực thể có tên như &eacute; nếu có tên thông dụng (dùng dạng số thay thế cho các ký tự còn lại) hoặc tham chiếu số như &#xE9; cho mọi ký tự.

Việc giải mã không dùng trình phân tích cú pháp HTML của trình duyệt. Công cụ sử dụng bảng tích hợp gồm toàn bộ 252 thực thể có tên trong HTML 4.01, &apos; và khoảng 30 tên HTML5 thông dụng, cùng các tham chiếu thập phân và thập lục phân. Tham chiếu số tuân theo quy tắc HTML5: &#0;, giá trị surrogate và giá trị lớn hơn U+10FFFF được chuyển thành ký tự thay thế �; các giá trị 128–159 được đọc theo Windows-1252, vì vậy &#150; trở thành dấu gạch ngang en. Một số tên cũ như &amp và &copy cũng được chấp nhận khi không có dấu chấm phẩy kết thúc, giống như trong trình duyệt. HTML5 định nghĩa hơn 2.000 tên; những tên hiếm không có trong bảng sẽ được giữ nguyên và liệt kê.

Mã hóa văn bản trước khi chèn vào HTML là một biện pháp quan trọng để phòng chống cross-site scripting (XSS), nhưng chỉ phù hợp với nội dung phần tử và giá trị thuộc tính đặt trong dấu nháy. Văn bản đặt bên trong khối <script>, thuộc tính style hoặc URL cần được mã hóa theo cách khác.

Ví dụ

Hiển thị mã trên trang web

Để hiển thị <div class="box"> dưới dạng văn bản trong bài đăng blog, hãy mã hóa thành &lt;div class=&quot;box&quot;&gt;. Trình duyệt sẽ hiển thị thẻ gốc thay vì tạo một phần tử.

Chuẩn bị văn bản cho mẫu email cũ

Với tùy chọn “Dùng thực thể có tên nếu có”, “Café – 5 €” trở thành Caf&eacute; &ndash; 5 &euro;, hiển thị chính xác ngay cả khi email được gửi bằng bộ ký tự không phải UTF-8.

Làm sạch văn bản đã thu thập hoặc xuất ra

Bản xuất từ CMS có nội dung Fish &amp; Chips &#8211; &pound;9. Giải mã thành Fish & Chips – £9, sẵn sàng để dán vào bảng tính.

Câu hỏi thường gặp

Cần escape những ký tự nào trong HTML?

Trong nội dung phần tử, phải escape & và < (cũng nên escape >). Trong giá trị thuộc tính, hãy escape cả ký tự dấu nháy bao quanh giá trị. Escape cả năm ký tự (& < > " ') ở mọi nơi là quy tắc đơn giản, an toàn mà công cụ này áp dụng.

Thực thể có tên và thực thể số khác nhau thế nào?

Các thực thể có tên như &copy; dễ đọc hơn nhưng chỉ có cho một số ký tự nhất định. Tham chiếu số như &#169; (thập phân) hoặc &#xA9; (thập lục phân) dùng được cho mọi ký tự Unicode, kể cả emoji.

Tại sao &nbsp; được giải mã thành ký tự trông giống dấu cách?

&nbsp; là dấu cách không ngắt dòng (U+00A0). Ký tự này trông như dấu cách thông thường nhưng ngăn xuống dòng và không bị HTML gộp lại. Đây là ký tự khác với dấu cách thông thường, điều này có thể quan trọng khi so sánh hoặc tìm kiếm văn bản.

Tôi có cần mã hóa chữ có dấu như é không?

Không cần nếu trang của bạn dùng UTF-8 (<meta charset="utf-8">), như hầu hết các trang hiện đại. Hãy giữ cài đặt mặc định để chỉ escape năm ký tự đặc biệt.

Mã hóa như vậy có đủ để ngăn XSS không?

Cách này đủ dùng với văn bản không đáng tin cậy được chèn vào nội dung phần tử HTML hoặc giá trị thuộc tính có dấu nháy. Cách này không đủ an toàn cho mã JavaScript, CSS, thuộc tính không có dấu nháy hoặc URL như href="javascript:…"; những trường hợp đó cần xử lý riêng theo ngữ cảnh.

Quyền riêng tư

Việc mã hóa và giải mã được thực hiện bằng thao tác chuỗi thuần trong trình duyệt; văn bản của bạn không bao giờ được hiển thị dưới dạng HTML, tải lên, lưu trữ hoặc đưa vào dữ liệu phân tích.