HTML: Символы, сущности и коды

Иногда на сайте нужно отобразить специальный символ — например, амперсанд (&). Нельзя просто вставить символ & напрямую в HTML, потому что многие символы зарезервированы и интерпретируются как часть синтаксиса HTML. Вместо этого используются HTML-сущности (entities) — именованные или числовые коды, которые браузер переводит в нужный символ при отображении страницы.
Что такое символы в HTML?
При верстке страницы вы используете символы для пунктуации и оформления текста. Большая часть символов вставляется напрямую, но некоторые имеют специальное значение в HTML или неудобны для набора с клавиатуры. Например:
- Угловые скобки: < и > — отделяют теги.
- Амперсанд: & — вводит сущность.
- Кавычки: “ и ‘ — используются в атрибутах.
Если браузер встретит символ < вне контекста тега, он может начать парсить HTML-тег и нарушить структуру страницы. Поэтому такие символы кодируют через сущности. Примеры символов, требующих сущностей:
- Амперсанд (
&) - Меньше (
<) - Больше (
>) - Двойная кавычка (
") - Одинарная кавычка (
')
Некоторые символы (©, ™, ®) можно вставлять напрямую, но иногда удобнее воспользоваться сущностями: они надёжно работают при разных кодировках и в старых редакторах.
И почему это важно
- Предотвращает ошибки парсинга HTML.
- Обеспечивает предсказуемый вывод в разных браузерах и средах.
- Удобно для автоматической генерации HTML (шаблонизаторы, CMS).
Именованные и числовые сущности
Каждый символ можно представить с помощью числовой сущности; для большинства часто используемых символов также есть именованная сущность. Ниже — удобная таблица соответствия.
| Символ | Именованная сущность | Числовая сущность |
|---|---|---|
| Ampersand | & | & |
| Less than | < | < |
| Greater than | > | > |
| Double quote | " | " |
| Single quote | ' | ' |
| Copyright | © | © |
| Trademark symbol | ™ | ™ |
| Registered trademark symbol | ® | ® |
Использование любой из форм (именованной или числовой) покажет соответствующий символ в браузере. Например, © и © оба отобразят символ ©.
Добавление эмодзи на страницу
Эмодзи в HTML обычно вставляют как числовые сущности в виде Unicode-кодов (hex). Не все эмодзи имеют именованную сущность, поэтому числовой формат используется чаще:
| Символ | Числовая сущность |
|---|---|
| Улыбающееся лицо (😃) | 😃 |
| Смеющееся лицо (😆) | 😆 |
| Лицо с нимбом (😇) | 😇 |
Важно: отображение эмодзи зависит от шрифта и платформы; на разных устройствах один и тот же код может выглядеть по-разному.
Как вставить сущности в HTML (пошагово)
- Создайте новый HTML-файл и укажите базовую структуру и кодировку:
Symbol and Entity Example
- Внутри тега body добавьте содержимое с требуемыми сущностями. Можно использовать как именованные, так и числовые коды:
HTML Symbols
Copyright symbol: ©
Ampersand symbol: &
Trademark symbol: ™
Smiling Face: 😃
- Откройте файл в браузере: коды преобразуются в соответствующие символы и будут видны пользователю.

Когда сущности не нужны или когда они ломаются
- Если весь документ в кодировке UTF-8 и источник текста гарантированно в UTF-8, многие символы (включая эмодзи и ©) можно вставлять напрямую без сущностей. Однако при сомнительных конвертациях или при экспорте/импорте данных сущности безопаснее.
- Сущности “ломаются”, если они экранируются дополнительно (например, шаблонизатор уже экранирует &, превратив
&в&). Следите за двойным экранированием. - Внутри JavaScript-строк в HTML стоит учитывать экранирование JS-кавычек и использование функций для безопасной вставки (innerText vs innerHTML).
Альтернативные подходы
- Использовать Unicode напрямую — проще, когда кодировка страницы гарантирована. Это лучший вариант для статического контента и CMS с корректной кодировкой.
- При генерации контента со стороны сервера — правильно экранировать символы (на уровне шаблонов или при выводе) вместо ручной подстановки сущностей.
- CSS-псевдоэлементы: content: “\00A9”; — для декоративных вставок символов через CSS.
- JavaScript: добавлять символы программно через textContent или decodeURIComponent/escape, если данные приходят в URL-процентном виде.
Ментальные модели и рекомендации
- Правило простоты: если символ безопасно отобразится в UTF-8 — вставляйте его напрямую; если есть риск повредить HTML — используйте сущность.
- Всегда указывайте в .
- Для вывода пользовательского ввода используйте безопасное экранирование (чтобы предотвратить XSS); не полагайтесь на сущности как на единственную меру безопасности.
Мини-методика: как добавлять символы в проект
- Проверьте кодировку файла и сервера — должно быть UTF-8.
- Решите: вставлять символ напрямую или через сущность.
- Если используете сущности, применяйте именованные для читаемости и числовые для нестандартных символов/эмодзи.
- Тестируйте в браузерах и на устройствах с разными системными шрифтами.
- Пропишите тесты/приёмку (см. ниже).
Критерии приёмки
- Вставленный символ отображается корректно в Chrome, Firefox и WebKit-браузерах.
- Отсутствует двойное экранирование (например, &).
- Для динамически генерируемого контента проверено, что вставка не открывает XSS-уязвимость.
- Эмодзи отображается либо как графика, либо как замещающий символ, но не как текстовый код.
Чек-лист по ролям
- Разработчик:
- Убедиться в кодировке страницы UTF-8.
- Правильно экранировать пользовательский ввод.
- Применять сущности в шаблонах при необходимости.
- Контент-менеджер:
- Использовать именованные сущности для юридических символов и кавычек при вставке через CMS.
- Проверять визуальный вывод перед публикацией.
- QA:
- Тестировать отображение символов в нескольких браузерах и на мобильных устройствах.
- Проверять отсутствие ошибок парсинга HTML.
Короткий словарь (1 строка)
- Сущность (entity): текстовый код, представляющий символ в HTML; бывает именованной (например, &) или числовой (например, ©).
Частые ошибки и способы их устранения
Проблема: символы отображаются как код (& вместо &).
- Причина: двойное экранирование или невыполненное декодирование в шаблонизаторе.
- Решение: отключить дополнительное экранирование там, где это безопасно, или хранить исходный символ в UTF-8.
Проблема: эмодзи не отображаются или показывается квадратик.
- Причина: отсутствие шрифта, поддерживающего соответствующий Unicode.
- Решение: использовать системные шрифты, настроить резервные шрифты или вставлять SVG-пиктограммы.
Краткая сводка
- Используйте сущности для зарезервированных символов и в ситуациях с ненадёжной кодировкой.
- В большинстве современных проектов при правильной кодировке UTF-8 можно вставлять символы напрямую.
- Тестируйте вывод и следите за безопасностью при вставке динамического контента.
Важно: экспериментируйте на тестовой странице и добавляйте проверки в CI, чтобы избежать регрессий при обновлениях шаблонов.
Похожие материалы
Вставка музыкальных символов в Word и Excel
Карта изображения в GIMP — быстрый гид
Бесплатные шрифты, похожие на платные: лучшие способы
Проверить число циклов батареи в Windows
Nessus на Kali Linux: установка и запуск