Mã hóa và giải mã thực thể HTML
Chuyển văn bản thành thực thể HTML, hoặc chuyển các thực thể như & và € về lại ký tự mà chúng đại diện.
Chạy trong trình duyệt; những gì bạn nhập không rời khỏi thiết bị của bạn
Dán văn bản để bắt đầu.
Văn bản dài đến vài triệu ký tự. Giải mã hiểu mọi thực thể có tên mà trình duyệt của bạn biết (toàn bộ danh sách HTML5) cùng các số thập phân và thập lục phân; mỗi tham chiếu cần có dấu chấm phẩy kết thúc. Giải mã chỉ một cấp: &lt; thành <, không phải <.
Cách mã hóa và giải mã thực thể HTML
- Chọn Mã hóa hoặc Giải mã rồi dán văn bản của bạn.
- Khi mã hóa, chọn chỉ mã hóa các ký tự không an toàn, dùng tên như é nếu có, hoặc dùng số cho mọi thứ ngoài ASCII.
- Sao chép kết quả.
Thực thể HTML là gì
HTML giao nhiệm vụ đặc biệt cho một vài ký tự: dấu nhỏ hơn mở một thẻ, dấu và mở một thực thể, còn dấu nháy đóng giá trị của một thuộc tính. Để hiển thị một trong các ký tự đó dưới dạng văn bản, bạn viết thực thể thay cho nó: < cho <, & cho &. Thực thể cũng cho phép viết những ký tự khó gõ hoặc bảng mã trang cũ không chứa được, như é cho é, € cho € hay 😀 cho một emoji.
Thực thể bắt đầu bằng dấu và và kết thúc bằng dấu chấm phẩy. Ở giữa là một tên (copy), một số thập phân sau # (#169) hoặc một số thập lục phân sau #x (#xA9). Cả ba cách đều viết ra ký hiệu bản quyền. Quá trình mã hóa đi qua văn bản của bạn từng ký tự một: năm ký tự không an toàn luôn trở thành thực thể, còn lại tùy tùy chọn bạn chọn, từ không gì cả đến một số cho mỗi ký tự.
Giải mã đọc từng tham chiếu và thay bằng ký tự của nó. Số được chuyển đổi trực tiếp theo quy tắc HTML: số bằng 0, nằm ngoài phạm vi hoặc là surrogate sẽ thành ký tự thay thế, và các số từ 128 đến 159 được đọc như ký tự Windows-1252, giống cách trình duyệt làm. Tên được trình duyệt của bạn xử lý, vì nó biết toàn bộ danh sách HTML5. Giải mã chỉ chạy một lượt, nên &lt; thành < chứ không thành dấu nhỏ hơn trần.
Mẹo
- Cần escape một giá trị cho địa chỉ web? Hãy dùng Mã hóa và giải mã URL.
- Làm gọn mã đánh dấu trước khi escape bằng công cụ định dạng HTML.
- Không rõ vì sao văn bản trông lạ? Có thể có ký tự ẩn bên trong: hãy kiểm tra bằng công cụ phát hiện ký tự vô hình.
Câu hỏi thường gặp
Những ký tự nào bắt buộc phải escape trong HTML?
Năm ký tự: dấu nhỏ hơn < (<), dấu lớn hơn > (>), dấu và & (&), dấu nháy kép " (") và dấu nháy đơn ' ('). Escape chúng giúp bạn hiển thị mã hoặc dữ liệu người dùng nhập dưới dạng văn bản mà không bị hiểu là mã đánh dấu. Tùy chọn đầu tiên, Chỉ các ký tự không an toàn, làm đúng việc đó.
Thực thể có tên và thực thể dạng số khác nhau thế nào?
Thực thể có tên dùng một từ ngắn, như é cho é hay € cho €. Thực thể dạng số dùng điểm mã Unicode, ở dạng thập phân (é) hoặc thập lục phân (é). Cả hai cho ra cùng một ký tự. Chỉ một số ký tự có tên; số còn lại cần dùng số.
Vì sao phải mã hóa cả ký tự ngoài ASCII?
Nếu trang hoặc email không được gửi dưới dạng UTF-8, chữ có dấu và ký hiệu có thể biến thành ký tự rác. Thực thể chỉ gồm ASCII thuần nên vẫn nguyên vẹn với mọi bảng mã.
Giải mã có bao phủ mọi thực thể không?
Có. Tham chiếu thập phân và thập lục phân được chuyển đổi trực tiếp, còn tên được tra bằng chính trình phân tích HTML của trình duyệt, vốn biết toàn bộ danh sách HTML5 với hơn hai nghìn tên. Tham chiếu thiếu dấu chấm phẩy được giữ nguyên, tên không xác định cũng vậy, và được liệt kê để bạn thấy.
Chỉ mã hóa có đủ để chặn XSS không?
Mã hóa năm ký tự không an toàn là cách xử lý đúng khi bạn đặt văn bản vào nội dung của phần tử HTML hoặc vào giá trị thuộc tính nằm trong dấu nháy. Như vậy là chưa đủ bên trong script, style, thuộc tính không có dấu nháy hoặc URL, những nơi cần cách escape riêng. Công cụ này dành cho văn bản bạn dán vào, không thay thế cách escape của framework.
Văn bản của tôi có bị tải lên không?
Không. Mọi thứ diễn ra trong trình duyệt của bạn và không có gì rời khỏi thiết bị.