Vì sao văn bản hiện “&” và cách khắc phục
Đăng ngày · Cập nhật ngày 3 phút đọc
Khi một văn bản hiện “&” thay vì “&”, một thực thể HTML đã bị mã hóa thêm một lần. Công cụ giải mã từng cấp một và báo cho bạn khi còn sót lại.
Thực thể HTML là gì
Thực thể là một chuỗi dấu biểu thị một ký tự dành riêng cho mã của trang. Năm thực thể thường gặp.
| Ký tự | Thực thể |
|---|---|
| & | & |
| < | < |
| > | > |
| " | " |
| ' (dấu nháy thẳng) | ' |
Mã hóa kép đến từ đâu
Một văn bản đôi khi đi qua hai hệ thống, mỗi hệ thống đều mã hóa: một trình soạn thảo, rồi một mẫu trang. Mỗi lượt biến đổi dấu “&” của thực thể trước đó. Với Mã hóa/giải mã thực thể HTML, mã hóa “Tom & Jerry” cho “Tom & Jerry”, rồi mã hóa kết quả đó cho “Tom &amp; Jerry”.
| Bước | Văn bản kết quả |
|---|---|
| Văn bản gốc | Tom & Jerry |
| Mã hóa một lần | Tom & Jerry |
| Mã hóa hai lần | Tom &amp; Jerry |
Trình duyệt giải mã một cấp khi hiển thị. Một văn bản mã hóa hai lần vì thế hiển thị “&” thay vì “&”.
Giải mã từng cấp một
Công cụ gỡ một cấp thực thể duy nhất ở mỗi lượt. Nếu kết quả vẫn còn thực thể, chế độ “Cả hai” báo điều đó và bạn chạy giải mã lại trên kết quả.
| Văn bản | Lần giải mã thứ nhất | Lần giải mã thứ hai |
|---|---|---|
| Tom &amp; Jerry | Tom & Jerry | Tom & Jerry |
| &lt;b&gt;gras&lt;/b&gt; | <b>gras</b> | <b>gras</b> |
Giải mã một cấp duy nhất giúp không hoàn tác một phép mã hóa có chủ ý: một ví dụ mã cần hiển thị “&” trên màn hình được viết là “&amp;” trong trang.
Chữ có dấu và ký hiệu
Giải mã hiểu mọi thực thể có tên kết thúc bằng dấu chấm phẩy, không chỉ năm thực thể thông dụng. “café à 5 € © 2026” cho “café à 5 € © 2026”, khoảng trắng không ngắt trở thành một khoảng trắng không ngắt thật.
Thực thể dạng số
Thực thể dạng số cũng được giải mã: “été” cho “été”, và “😀” cũng như “😀” cho cùng một biểu tượng cảm xúc.
Điều công cụ để nguyên
- Một thực thể không xác định như “&inconnue;” được giữ nguyên.
- Một thực thể không có dấu chấm phẩy cuối, như “&” hay “<” trong một câu, không bị động đến.
- Một địa chỉ có tham số, như “https://exemple.fr/?a=1¶m=2©=4”, vẫn chính xác: “¶m” và “©” không bị coi là thực thể ở đó.
Mã hóa mã để hiển thị
Để hiển thị một đoạn mã trong trang, hãy mã hóa nó một lần. Văn bản “<a href="x">l’été & plus</a>” cho “<a href="x">l'été & plus</a>”. Chữ có dấu không bị mã hóa, chỉ năm ký tự dành riêng mới bị.
Tránh vấn đề
Chỉ mã hóa một lần, vào phút chót, khi ghi vào trang. Để thay hàng loạt phần còn sót lại của một lần mã hóa sai, Tìm và thay thế trong văn bản rất phù hợp. Địa chỉ web theo một cách mã hóa khác, được giải thích trong Đừng nhầm lẫn Base64, hash và địa chỉ được mã hóa.
Kiểm tra kết quả
- Chạy giải mã lại chừng nào công cụ còn báo thực thể còn sót.
- So sánh với văn bản gốc trên màn hình.
- Kiểm tra khoảng trắng không ngắt và biểu tượng cảm xúc.
