Công Cụ Nhanh

Mã hoá, giải mã HTML entities

Chế độ

Ký tự không có tên trong chuẩn HTML sẽ dùng mã số.

56 ký tự → 82 ký tự

Mã hoá entity không thay được việc chống XSS đúng cách

Mã hoá & < > " ' an toàn khi chèn vào nội dung thẻ HTML hoặc thuộc tính có ngoặc kép. Nó KHÔNG đủ khi chèn vào trong <script>, thuộc tính sự kiện (onclick), đường dẫn href="javascript:…", CSS hay thuộc tính không có ngoặc. Hãy dùng cơ chế thoát sẵn có của framework (React, Blade, Twig, htmlspecialchars của PHP) và lọc HTML bằng thư viện như DOMPurify.

Entity hay dùng

Ký tựTênThập phânHexÝ nghĩa
&&amp;&#38;&#x26;Dấu và (bắt buộc mã hoá)
<&lt;&#60;&#x3C;Nhỏ hơn, mở thẻ
>&gt;&#62;&#x3E;Lớn hơn
"&quot;&#34;&#x22;Ngoặc kép trong thuộc tính
'&apos;&#39;&#x27;Nháy đơn (HTML5)
␣&nbsp;&#160;&#xA0;Dấu cách không ngắt dòng
©&copy;&#169;&#xA9;Bản quyền
®&reg;&#174;&#xAE;Đã đăng ký
™&trade;&#8482;&#x2122;Thương hiệu
€&euro;&#8364;&#x20AC;Euro
°&deg;&#176;&#xB0;Độ (°C)
×&times;&#215;&#xD7;Nhân
÷&divide;&#247;&#xF7;Chia
±&plusmn;&#177;&#xB1;Cộng trừ
–&ndash;&#8211;&#x2013;Gạch ngang ngắn (1–5)
—&mdash;&#8212;&#x2014;Gạch ngang dài
…&hellip;&#8230;&#x2026;Dấu ba chấm
«&laquo;&#171;&#xAB;Ngoặc kép góc trái
»&raquo;&#187;&#xBB;Ngoặc kép góc phải
“&ldquo;&#8220;&#x201C;Ngoặc kép cong mở
”&rdquo;&#8221;&#x201D;Ngoặc kép cong đóng
•&bull;&#8226;&#x2022;Chấm tròn đầu dòng
·&middot;&#183;&#xB7;Chấm giữa
→&rarr;&#8594;&#x2192;Mũi tên phải
←&larr;&#8592;&#x2190;Mũi tên trái
♥&hearts;&#9829;&#x2665;Trái tim
✓&check;&#10003;&#x2713;Dấu tích
đ&dstrok;&#273;&#x111;Chữ đ (tiếng Việt)
ă&abreve;&#259;&#x103;Chữ ă (tiếng Việt)
ê&ecirc;&#234;&#xEA;Chữ ê

Xử lý ngay trên trình duyệt của bạn. Tệp và dữ liệu không được tải lên máy chủ.

Trả lời nhanh

HTML entity là cách viết một ký tự bằng mã, bắt đầu bằng & và kết thúc bằng dấu chấm phẩy: &lt; là <, &amp; là &, &#233; hay &#xE9; là é. Cần mã hoá ít nhất 5 ký tự & < > " ' khi muốn hiển thị chúng dưới dạng chữ thay vì để trình duyệt hiểu là mã HTML.

HTML entity là gì?

Dán đoạn văn hay mã HTML để mã hoá các ký tự đặc biệt thành entity, hoặc dán chuỗi có &amp;, &nbsp;, &#7871; để giải mã về chữ thường. Có thể chỉ mã hoá 5 ký tự đặc biệt (đủ cho hầu hết trường hợp) hoặc mã hoá cả mọi ký tự ngoài ASCII như chữ tiếng Việt có dấu và emoji, theo dạng tên (&eacute;), số thập phân (&#233;) hoặc hex (&#xE9;). Phần giải mã hiểu cả mã số kiểu Windows-1252 cũ (&#150;) như trình duyệt. Mọi thứ xử lý ngay trên máy bạn.

Minh hoạ tấm thẻ hình dấu ngoặc nhọn đang được gói vào bọc giấy buộc dây, bên cạnh là một thẻ chưa gói, chiếc kéo và cuộn băng dính

Cách mã hoá hoặc giải mã HTML entity

  1. 1

    Chọn “Mã hoá” hay “Giải mã” ở đầu công cụ.

  2. 2

    Khi mã hoá, chọn phạm vi: chỉ ký tự đặc biệt (giữ nguyên chữ tiếng Việt) hoặc cả ký tự ngoài ASCII (dùng cho hệ thống chỉ nhận ASCII, email cũ), rồi chọn dạng entity.

  3. 3

    Dán nội dung vào ô bên trái; kết quả hiện ngay ở ô bên phải. Bấm “Sao chép” để lấy kết quả.

  4. 4

    Bấm “Đổi chiều” để đưa kết quả sang ô nhập và chạy chiều ngược lại, tiện kiểm tra mã hoá rồi giải mã có ra đúng văn bản gốc không.

5 ký tự bắt buộc mã hoá trong HTML

Ký tựEntity tênMã sốVì sao
&&amp;&#38;Mở đầu mọi entity; để nguyên dễ bị hiểu nhầm (ví dụ &copy trong đường dẫn)
<&lt;&#60;Mở thẻ HTML, có thể làm trình duyệt chạy mã lạ
>&gt;&#62;Đóng thẻ; mã hoá cho đồng bộ và an toàn
"&quot;&#34;Kết thúc giá trị thuộc tính đặt trong ngoặc kép
'&apos;&#39;Kết thúc thuộc tính dùng nháy đơn; &apos; không có trong HTML4 nên hay dùng &#39;

Vuốt ngang để xem cả bảng →

Ba dạng viết của cùng một ký tự

DạngVí dụ cho ©Ghi chú
Tên&copy;Dễ đọc nhưng chỉ có cho khoảng hơn 2 000 ký tự trong chuẩn HTML
Số thập phân&#169;Dùng được cho mọi ký tự Unicode
Số hex&#xA9;Cùng giá trị, viết theo mã Unicode U+00A9

Ví dụ thực tế

Đăng đoạn mã lên blog

Muốn bài viết hiển thị <div class="box"> thay vì tạo ra một thẻ div thật, mã hoá thành &lt;div class=&quot;box&quot;&gt; rồi dán vào trình soạn thảo HTML.

Tên sản phẩm bị lỗi “&amp;amp;”

Dữ liệu bị mã hoá hai lần khi đi qua nhiều hệ thống. Giải mã một lần ra “&amp;”, lần nữa ra “&” để thấy chuỗi gốc, rồi sửa chỗ mã hoá thừa.

Email gửi ra hiện chữ lạ

Hệ thống gửi mail cũ không khai báo UTF-8 làm chữ “Cà phê” thành “Cà phê”. Mã hoá cả ký tự ngoài ASCII thành &#224; … giúp nội dung hiển thị đúng ở mọi bảng mã.

Dữ liệu cào về có &nbsp;

Văn bản lấy từ trang web hay có &nbsp; và &#8211;. Giải mã để được dấu cách và gạch ngang thật trước khi đưa vào Excel.

Lỗi thường gặp

Mã hoá hai lần thành &amp;lt;.
Chỉ mã hoá ở MỘT chỗ, ngay lúc chèn vào HTML. Nếu framework (React, Blade, Twig) đã tự thoát ký tự thì không mã hoá thêm.
Nghĩ mã hoá entity là đủ chống XSS.
Entity chỉ an toàn cho nội dung thẻ và thuộc tính có ngoặc. Trong <script>, onclick, href="javascript:" hay CSS cần cách thoát khác hoặc không chèn dữ liệu người dùng vào đó.
Thiếu dấu chấm phẩy: &copy 2026.
Trình duyệt đoán được một số tên cũ nhưng không chắc chắn; luôn viết đủ &copy;. Công cụ này cũng chỉ giải mã entity có dấu chấm phẩy.
Mã hoá cả chữ tiếng Việt làm HTML dài gấp mấy lần.
Trang đã khai báo <meta charset="utf-8"> thì không cần: chỉ chọn “Chỉ ký tự đặc biệt”.

Có cần mã hoá chữ tiếng Việt không?

Không, nếu trang dùng UTF-8 (gần như mọi website ngày nay). Chữ có dấu viết thẳng vào HTML vẫn hiển thị đúng, file nhỏ hơn và dễ sửa hơn.

Chỉ nên mã hoá cả ký tự ngoài ASCII khi nội dung đi qua hệ thống không chắc về bảng mã: email HTML cũ, tệp XML gửi cho phần mềm khác, hay chuỗi phải nằm trong mã nguồn chỉ cho phép ASCII.

Thuật ngữ

Entity
Chuỗi &…; thay cho một ký tự, ví dụ &amp; thay cho &.
Named reference
Entity dạng tên như &nbsp;, &copy; được định nghĩa sẵn trong chuẩn HTML.
Numeric reference
Entity dạng số: &#233; (thập phân) hay &#xE9; (hex) theo mã Unicode.
Escape (thoát ký tự)
Đổi ký tự có ý nghĩa đặc biệt thành dạng an toàn để hiển thị như chữ thường.
XSS
Tấn công chèn mã script vào trang qua dữ liệu người dùng nhập, khi dữ liệu không được thoát đúng cách.
&nbsp;
Dấu cách không ngắt dòng: giữ hai từ luôn ở cùng một dòng, ví dụ “100&nbsp;km”.

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

&nbsp; khác dấu cách thường thế nào?

Trình duyệt không ngắt dòng tại &nbsp; và không gộp nhiều &nbsp; liền nhau thành một như dấu cách thường. Đừng dùng nó để căn lề; dùng CSS.

Nên dùng &apos; hay &#39;?

Cả hai cùng là dấu nháy đơn. &apos; có trong HTML5 và XML nhưng không có trong HTML4, nên &#39; an toàn hơn cho email và trình duyệt cũ; công cụ này dùng &#39;.

Entity dạng tên và dạng số có khác gì khi hiển thị?

Không. &copy;, &#169; và &#xA9; đều hiện ra ©. Dạng tên dễ đọc hơn, dạng số dùng được cho mọi ký tự kể cả emoji.

PHP mã hoá HTML bằng hàm nào?

htmlspecialchars($s, ENT_QUOTES, 'UTF-8') mã hoá 5 ký tự đặc biệt, giống chế độ “Chỉ ký tự đặc biệt”; htmlentities mã hoá thêm các ký tự có tên. Giải mã dùng html_entity_decode.

JavaScript có hàm mã hoá HTML sẵn không?

Không có hàm chuẩn. Gán chuỗi vào textContent của phần tử (thay vì innerHTML) là cách an toàn nhất; React, Vue tự thoát ký tự khi hiển thị biến.

Tại sao có entity không giải mã được?

Công cụ có bảng tên thường dùng (Latin-1, chữ tiếng Việt có tên, ký hiệu toán, mũi tên, Hy Lạp). Tên hiếm sẽ được giữ nguyên và liệt kê ở dòng trạng thái; dạng số thì luôn giải mã được.

Đánh giá và bình luận

Đang tải…