Trình chuyển đổi thực thể HTML

5 trên 2 xếp hạng

Trình chuyển đổi thực thể HTML là công cụ miễn phí giúp chuyển đổi qua lại giữa tham chiếu ký tự HTML và ký tự đã giải mã để dùng trong trang web, hệ thống quản lý nội dung cùng các định dạng văn bản khác.

Thực thể HTML là gì và tại sao cần dùng?

Thực thể HTML biểu diễn ký tự bằng một dạng văn bản mà HTML có thể phân biệt với mã đánh dấu. Tham chiếu ký tự HTML thường bắt đầu bằng dấu và và kết thúc bằng dấu chấm phẩy. Đó có thể là tham chiếu ký tự có tên, chẳng hạn & biểu diễn dấu và, hoặc tham chiếu ký tự dạng số, chẳng hạn £ biểu diễn ký hiệu bảng Anh.

Thực thể đặc biệt hữu ích khi một ký tự mang ý nghĩa riêng trong HTML. Dấu nhỏ hơn viết trực tiếp có thể bị hiểu nhầm là phần mở đầu của thẻ, vì vậy có thể viết thành <. Tham chiếu ký tự cũng cho phép hệ thống biểu diễn một số ký tự trong HTML hoặc mã đánh dấu tương thích mà không nhầm chúng với cú pháp đánh dấu hay cú pháp điều khiển.

Mã hóa thực thể không phải là mã hóa bảo mật và không giữ bí mật nội dung. Bất kỳ ai cũng có thể đọc hoặc giải mã tham chiếu thực thể. Tuyệt đối không dùng cách này để che giấu mật khẩu, dữ liệu cá nhân hay nội dung mật.

Cách dùng Trình chuyển đổi thực thể HTML

Nhập văn bản cần xử lý vào trường Mã hóa hoặc Giải mã, sau đó xem kết quả tương ứng tại Đã mã hóa thành thực thể HTML hoặc Đã giải mã thực thể HTML. Dùng kết quả đã mã hóa khi văn bản cần xuất hiện trong ngữ cảnh văn bản hoặc thuộc tính HTML phù hợp. Dùng kết quả đã giải mã khi bạn cần lấy các ký tự mà thực thể hiện có biểu diễn.

Quá trình chuyển đổi diễn ra trên máy chủ. Dữ liệu bạn nhập được gửi đến máy chủ qua HTTPS và không được lưu trữ.

Trước khi chuyển đổi, hãy kiểm tra xem bạn có thực sự cần thực thể HTML hay không. Giá trị trong chuỗi truy vấn thường cần mã hóa phần trăm URL, còn tên miền quốc tế hóa dùng Punycode. Hãy dùng Bộ giải mã URL và Trình chuyển đổi Punycode IDN cho hai định dạng tương ứng này.

Kết quả mã hóa và giải mã trông như thế nào?

Kết quả giải mã thay thế các tham chiếu thực thể được nhận dạng bằng ký tự tương ứng. Ngược lại, dạng mã hóa biểu diễn ký tự bằng cú pháp thực thể.

Dữ liệu nhập: <p>Tea & cake</p>

Kết quả giải mã: <p>Tea & cake</p>

Các dấu ngoặc nhọn trong kết quả giải mã là những ký tự có thể trở thành mã đánh dấu HTML nếu được chèn vào trang dưới dạng HTML. Giải mã không làm sạch nội dung, loại bỏ tập lệnh hay biến HTML không đáng tin cậy thành nội dung an toàn. Hãy xử lý nội dung đã giải mã theo đúng ngữ cảnh sử dụng.

Ví dụ cụ thể và các trường hợp nhập khó xử lý

Thực thể có tên và tham chiếu ký tự dạng số có thể biểu diễn cùng một ký tự theo nhiều cách. Ví dụ, &amp; là tham chiếu có tên của dấu và, &#38; là tham chiếu dạng số thập phân, còn &#x26; là dạng thập lục phân.

  • Dấu cách thông thường và chữ số viết trực tiếp không phải là tham chiếu thực thể, nên thường vẫn được giữ nguyên như văn bản bình thường.
  • Dấu câu chỉ thay đổi khi xuất hiện dưới dạng tham chiếu thực thể được nhận dạng hoặc được chủ động mã hóa.
  • Chữ cái có dấu, chữ viết không dùng bảng chữ cái Latinh và emoji có thể được biểu diễn bằng tham chiếu ký tự dạng số. Các tham chiếu này xác định điểm mã Unicode độc lập với bảng mã của mã nguồn HTML. Khả năng hiển thị chính xác phụ thuộc vào phông chữ, còn bảng mã ký tự đóng vai trò quan trọng khi kết quả giải mã được lưu trữ hoặc truyền đi.

Khi tạo thực thể, hãy thêm dấu chấm phẩy ở cuối. Trình duyệt có thể chấp nhận một số tham chiếu không có dấu chấm phẩy trong những ngữ cảnh hạn chế, nhưng cách viết rút gọn này dễ gây nhầm lẫn và kém tương thích hơn giữa các trình phân tích cú pháp.

Thực thể HTML thường xuất hiện ở đâu?

Thực thể HTML thường có trong mã nguồn HTML, hệ thống quản lý nội dung, trình soạn thảo văn bản đa dạng thức và email HTML. Ví dụ, chế độ xem mã của WordPress có thể chứa &nbsp; để biểu diễn dấu cách không ngắt dòng hoặc &amp; khi cần giữ nguyên dấu và trong mã đánh dấu.

Thực thể cũng có thể xuất hiện bên trong dữ liệu được truyền bằng một định dạng khác. Khi đó sẽ có nhiều lớp mã hóa và bạn phải xử lý chúng theo đúng thứ tự.

  • Payload JSON có thể chứa một đoạn HTML với văn bản dùng thực thể. Thoát ký tự JSON và giải mã thực thể HTML là hai thao tác riêng biệt.
  • Chuỗi truy vấn có thể chứa HTML đã được mã hóa phần trăm. Hãy giải mã lớp URL trước, rồi mới xác định văn bản thu được có chứa thực thể hay không.
  • URI dữ liệu có thể chứa HTML hoặc văn bản khác dùng thực thể, trong khi bản thân URI có thể sử dụng mã hóa phần trăm hoặc Base64.
  • Email HTML có thể mã hóa dấu câu hiển thị bằng thực thể, đồng thời dùng mã hóa truyền MIME để vận chuyển dữ liệu.
  • Tên miền quốc tế hóa có thể xuất hiện bên cạnh HTML đã mã hóa thực thể, nhưng bản thân tên miền thường được biểu diễn bằng Punycode thay vì thực thể HTML.

Tại sao giải mã thực thể HTML bị lỗi hoặc cho ra ký tự rác?

Giải mã thường thất bại vì dữ liệu đầu vào sai cấu trúc, dùng kiểu mã hóa khác hoặc chứa nhiều lớp mã hóa. Hãy kiểm tra văn bản gốc để tìm tham chiếu ký tự HTML có tên hoặc dạng số, thay vì liên tục chuyển đổi mà không xem lại kết quả.

  • Tham chiếu sai cấu trúc: Thiếu dấu và, dấu thăng hoặc dấu chấm phẩy có thể khiến tham chiếu không được nhận dạng. Hãy đối chiếu văn bản với các dạng như &amp; hoặc &#38;.
  • Dữ liệu bị mã hóa hai lần: Văn bản như &amp;lt; có thể được giải mã lần đầu thành &lt; và cần thêm một lần giải mã có chủ đích để trở thành dấu nhỏ hơn.
  • Không khớp bộ ký tự: Văn bản được diễn giải bằng sai bảng mã ký tự có thể hiển thị ký hiệu thay thế hoặc các chữ cái có dấu bị lỗi.
  • Sai định dạng: Văn bản chứa dấu phần trăm có thể đã được mã hóa URL. Một chuỗi dài gồm chữ cái, chữ số, dấu cộng, dấu gạch chéo hoặc dấu bằng ở cuối có thể là Base64.
  • Nếu dữ liệu đầu vào là Base64, biến thể hoặc bảng chữ cái đang dùng không đúng: Base64 an toàn cho URL dùng các ký tự khác với Base64 tiêu chuẩn. Thiếu phần đệm cũng có thể khiến một số bộ giải mã không hoạt động. Những vấn đề này không thuộc cú pháp thực thể HTML và cần được xử lý bằng Bộ giải mã Base64.

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

Tại sao &nbsp; trông giống dấu cách bình thường?

&nbsp; biểu diễn dấu cách không ngắt dòng. Ký tự này thường trông như dấu cách bình thường nhưng ngăn nội dung xuống dòng tại vị trí đó. Trình soạn thảo có thể giữ ký tự này mà không hiển thị dấu hiệu rõ ràng, vì vậy hãy xem mã nguồn hoặc kiểm tra ký tự khi tìm nguyên nhân của vấn đề khoảng cách.

Tên thực thể HTML có phân biệt chữ hoa và chữ thường không?

Có. Tham chiếu ký tự có tên phải tuân theo cách viết đã được quy định, và việc thay đổi chữ hoa hay chữ thường có thể khiến tham chiếu không được nhận dạng. Hãy dùng chính xác tên đã công bố và thêm dấu chấm phẩy, thay vì phụ thuộc vào cơ chế tự khắc phục lỗi của trình duyệt.

Có cần dùng thực thể cho mọi chữ cái có dấu không?

Không. Tài liệu HTML khai báo UTF-8 chính xác có thể chứa trực tiếp các ký tự như é, £ và 中文. Thực thể vẫn hữu ích khi cú pháp đánh dấu, hệ thống cũ hoặc quy tắc xuất bản cụ thể yêu cầu sử dụng.

Có thể dùng thực thể HTML trong XML không?

XML chỉ định nghĩa sẵn một nhóm nhỏ thực thể có tên, gồm &amp;, &lt;, &gt;, &quot; và &apos;. Nhiều tên hợp lệ trong HTML lại không hợp lệ trong XML, trừ khi chúng được định nghĩa trong kiểu tài liệu. Vì vậy, tham chiếu ký tự dạng số thường là lựa chọn an toàn hơn.

Trình chuyển đổi thực thể có sửa được HTML bị lỗi không?

Không. Công cụ có thể chuyển đổi tham chiếu thực thể, nhưng không cân bằng thẻ, sửa cấu trúc lồng nhau hay xác thực tài liệu. Sau khi chuyển đổi, hãy kiểm tra phần mã đánh dấu xung quanh và dùng trình xác thực HTML nếu trang vẫn hoạt động không đúng như mong đợi.

Kiểm tra lần cuối

Hãy xác nhận mã nguồn đang dùng tham chiếu ký tự HTML có tên hay dạng số, chỉ chuyển đổi đúng lớp tham chiếu ký tự cần xử lý, rồi đối chiếu kết quả với văn bản dự kiến hiển thị. Trước khi đưa nội dung đã giải mã lên trang đang hoạt động, hãy xem lại mọi dấu ngoặc nhọn, dấu ngoặc kép và dấu và trong đúng ngữ cảnh HTML thực tế.

Công cụ phổ biến