Для чего нужны HTML-сущности
HTML воспринимает некоторые символы как разметку, а не как литеральный текст. Амперсанд начинает символьные ссылки; угловые скобки открывают теги; кавычки ограничивают атрибуты. Когда эти символы должны появиться как содержимое—в записях блога, фрагментах документации, комментариях пользователей—их кодируют как HTML-сущности (также называют символьными ссылками). HTML-парсер браузера превращает сущности обратно в нужные символы при построении DOM.
Сущность может быть именованной (&, <, ") или числовой (&, &). Именованные формы легче читать в исходнике; числовые могут выразить любой кодовую точку Unicode, даже если известного имени нет. Кодирование—это техника безопасности разметки и совместимости. Это не шифрование и не замена контекстно-осознанному кодированию вывода в фреймворках безопасности приложений.
Закодируйте пример фразы с помощью из текста в HTML-сущности, затем обратите её с помощью из HTML-сущностей в текст.
Как связаны два под-инструмента
- Из текста в HTML-сущности — преобразует спецсимволы в безопасные для HTML ссылки на сущности, пригодные для встраивания в разметку.
- Из HTML-сущностей в текст — раскрывает ссылки на сущности обратно в обычные символы для чтения или дальнейшей обработки.
Используйте полный цикл, когда готовите примеры для учебника, чистите вставленный контент CMS или проверяете, что шаг экранирования в шаблоне совпадает с ожиданием. Если декодирование оставляет сущности нетронутыми, они могут быть некорректными (& без ;) или вне множества, которое распознаёт декодер.
Именованные и числовые ссылки
Именованные сущности. HTML определяет большой набор имён ( , ©, €, …). Для базового экранирования текста в HTML нужен лишь небольшой ядро: &, <, > и часто " / ' в зависимости от контекста атрибута.
Десятичные числовые. © — знак авторского права. Число — кодовая точка Unicode.
Шестнадцатеричные числовые. © — тот же знак авторского права. Hex распространён в спецификациях и сгенерированном выводе.
Смешанные стили в одном документе — корректный HTML, но команды часто стандартизируют именованные сущности для читаемости рукописного контента и числовые формы в генерируемых конвейерах.
Контекст важен для безопасности
Правила экранирования зависят от того, куда попадёт строка:
- Текстовые узлы HTML — экранирование
<,>и&предотвращает случайную инъекцию тегов. - Значения атрибутов HTML — кавычки нужно обрабатывать согласно стилю кавычек.
- Строковые литералы JavaScript внутри HTML — одного экранирования HTML-сущностями недостаточно; нужна JS-осознанная кодировка.
- Компоненты query URL — используйте percent-encoding, а не HTML-сущности.
Фреймворки приложений предоставляют контекстно-специфичные кодировщики не зря. Общая утилита «текст → сущности» отлична для авторства и отладки контента; сама по себе это не полная защита от XSS, когда данные попадают в скрипты, обработчики событий или CSS.
Типичные законные применения
Публикация примеров кода в HTML. Чтобы показать <div> на странице, нужно закодировать скобки, иначе браузер воспримет их как настоящие теги.
Контент email и CMS. Редакторы иногда хранят сущности; декодирование помогает увидеть человекочитаемый текст для миграции или поисковой индексации.
Нормализация копирования. Текстовые процессоры и сайты вставляют и сущности типографских кавычек; декодирование проясняет, что реально было вставлено.
Проверки локализации. Убедиться, что é и é обрабатываются единообразно в шаблонах.
Сущности, URL-кодирование и Unicode-экранирование
| Механизм | Алфавит / форма | Типичное применение |
|---|---|---|
| HTML-сущности | &name; / &#…; | Текст HTML/XML |
| Percent-encoding | %20, %2F | URL |
JSON \uXXXX | Unicode-экранирование | Строки JSON |
| Предопределённые сущности XML | Меньший именованный набор | XML |
Выбор неверного слоя — частая ошибка: %20 в тексте HTML отображается буквально как %20, а в URL неверен для серверов, ожидающих percent-encoding.
Ограничения
- Кодирование каждого символа числовой сущностью делает исходник нечитаемым и редко необходимо.
- Декодирование не выполняет HTML; оно только раскрывает ссылки в строке.
- Двойное кодирование (
&lt;) — распространённый признак CMS—декодируйте осторожно и останавливайтесь, когда текст читаем, иначе можно «перескочить». - Храните неопубликованный чувствительный контент офлайн, если того требует политика.
Итог
HTML-сущности позволяют значимым для разметки и специальным символам безопасно путешествовать внутри исходника HTML. Этот хаб объединяет конвертеры кодирования и декодирования для авторства, обучения и очистки. Учитывайте контекст вывода в приложениях, чувствительных к безопасности, предпочитайте понятные именованные сущности для рукописного контента и не путайте экранирование HTML с экранированием URL или JSON.