Когда нужно поставить кавычки-ёлочки « » вместо машинописных " ", длинное тире — вместо дефиса, знак евро € или копирайт ©, разработчик упирается в проблему: на клавиатуре этих символов нет. В HTML это решается двумя способами: HTML-сущностями (мнемонические имена вроде « или числовые коды) и прямой вставкой UTF-8-символов. В CSS — через шестнадцатеричный код в свойстве content у псевдоэлементов.
Ниже — готовые таблицы кодов, разбитые по категориям, и краткий разбор когда какой способ удобнее. Можно копировать прямо отсюда.
Как вставить спецсимвол в HTML
Любой спецсимвол в HTML имеет своё имя (мнемоническая сущность) и/или числовой код. Браузер при рендере увидит сущность и нарисует символ:
<p>Цена — 30€.</p>
<p>Цена — 30€.</p> <!-- то же самое числовым кодом -->
<p>Цена — 30€.</p> <!-- прямой UTF-8 символ -->
Все три варианта выведут на странице одно и то же. Различаются они тем, как код выглядит в исходнике и как ведёт себя при разной кодировке файла.
- Именованная сущность («, —, €) — самый читаемый вариант. В исходнике понятно, что за символ — даже если файл сохранён в неправильной кодировке. Минус: список имён ограничен стандартом, для редкого символа имени может не быть.
- Числовой код («, —, €) — работает для любого символа Unicode (есть ~143 тысячи символов). Менее читаемо, зато универсально. Шестнадцатеричная форма — € вместо €.
- Прямой UTF-8 (€, —, «) — самый короткий способ, читается естественно. Работает, если файл сохранён в UTF-8 и в шапке указано <meta charset="utf-8">. На большинстве современных проектов это так по умолчанию.
Какой выбрать? Для общих текстов лучше всего прямой UTF-8 — короче и нативнее. Для символов, которые легко спутать в исходнике (неразрывный пробел , тонкий пробел  , soft hyphen ­) — именованные сущности, чтобы было видно где они стоят. Числовые коды — на крайний случай.
Как вставить спецсимвол в CSS
В CSS спецсимвол можно вставить только в одном месте — в значение свойства content у псевдоэлементов ::before и ::after. Формат другой — шестнадцатеричный код Unicode с экранированием через обратный слэш:
.price::after {
content: '\20AC'; /* € */
}
.note::before {
content: '\2014\00A0'; /* — (em dash) + неразрывный пробел */
}
Где взять шестнадцатеричный код? В таблицах ниже — правая колонка с обратными слэшами. Или в DevTools: открываем Computed, ищем псевдоэлемент с символом, и копируем его escape-форму.
Зачем вообще вставлять символ через CSS? Обычно для декоративных значков — добавить стрелку рядом со ссылкой, маркер списка, единицу измерения после числа — не загромождая HTML.
/* стрелка после внешней ссылки */
a[target="_blank"]::after {
content: '\00A0\2197'; /* nbsp + ↗ */
font-size: 0.85em;
}
/* маркер «выполнено» в чек-листе */
.done::before {
content: '\2713\00A0'; /* ✓ + nbsp */
color: green;
}
Дальше — таблицы по категориям. В левой части — визуальный символ. В правой — HTML-сущность и CSS-код для копирования.
Кавычки
В русской типографике основные кавычки — ёлочки « ». Внутренние, когда кавычки нужны внутри кавычек — лапки „ “. Прямые двойные "..." в типографических текстах не используются — это машинописный пережиток.
| Кавычки | |||||||||||
| ‹ | › | « | » | “ | ” | ||||||
| ‹ | \2039 | › | \203A | « | \00AB | » | \00BB | “ | \201C | ” | \201D |
| ‚ | ‘ | ’ | „ | " | ′ | ||||||
| ‚ | \201A | ‘ | \2018 | ’ | \2019 | „ | \201E | " | \0022 | ′ | \2032 |
Тире, дефисы и знаки препинания
Самая частая путаница — дефис (-), короткое тире (–) и длинное тире (—). Дефис — в составных словах (по-моему). Короткое тире — в диапазонах (стр. 10–15, понедельник–пятница). Длинное тире — для пауз в предложении и заменителя «это». В русском больше всего нужен —.
| Знаки препинания | |||||||||||
| – | — | … | ' | ¡ | ¿ | ||||||
| – | \2013 | — | \2014 | … | \2026 | ' | \00BB | ¡ | \00A1 | ¿ | \00BF |
Пробелы (видимые и невидимые)
Кроме обычного пробела в HTML есть ещё несколько типов с разной шириной и поведением. Самый частый — неразрывный пробел : между числом и единицей (10 кг), между предлогом и словом (в дом), чтобы они не разрывались переносом строки.
Закрашенная часть в таблице ниже показывает реальную ширину пробела относительно других.
| Пробелы (закрашеная часть обозначает ширину пробела) | |||||||||||
| nn* | nn** | ||||||||||
| | \00A0 |   | \2002 |   | \2003 |   | \2009 | ‍ | ‍ | ‌ | \200C |
* - символ ‍ позволяет сделать склейку (лигатуру) соседних символов
** - символ ‌ запрещает склеивать соседние символы
Буллиты и маркеры
Используются для своих чек-листов, маркированных списков (когда хочется не стандартный <ul>), декоративных разделителей.
| Буллиты | |||||||||||
| • | · | ⋅ | ∗ | ✔ | ✘ | ||||||
| • | \2022 | · | \00B7 | ⋅ | \22C5 | ∗ | \2217 | ✔ | \2714 | ✘ | \2718 |
Валюты
Между числом и знаком валюты ставится неразрывный пробел , чтобы при переносе строки сумма и знак остались вместе. Правильно: 100 €. Неправильно: 100€ вплотную или с обычным пробелом.
| Валюта | |||||||||||
| € | $ | ¢ | £ | ₽ | ₴ | ||||||
| € | \20AC | $ | \0024 | ¢ | \FFE0 | £ | \FFE1 | ₽ | \20BD | ₴ | \20B4 |
Дополнительные текстовые символы
Символы, которые не подходят под другие категории: знак копирайта ©, торговой марки ™, параграфа §, градуса °, многоточие … (одним символом, не три точки!).
| Текст | |||||||||||
| © | ™ | ® | § | ¶ | @ | ||||||
| © | \00A9 | ™ | \2122 | ® | \00AE | § | \00A7 | ¶ | \00B6 | @ | \0040 |
Стрелки
Стрелки в HTML — для навигационных подсказок, индикаторов внешних ссылок, кнопок-аккордеонов. Чаще всего применяются → (вправо →) и ← (влево ←).
| Стрелки | |||||||||||
| ← | → | ↑ | ↓ | ↔ | ↵ | ||||||
| ← | \2190 | → | \2192 | ↑ | \2191 | ↓ | \2193 | ↔ | \2194 | ↵ | \21B5 |
| ⇐ | ⇒ | ⇑ | ⇓ | ⇔ | ↩ | ||||||
| ⇐ | \21D0 | ⇒ | \21D2 | ⇑ | \21D1 | ⇓ | \21D3 | ⇔ | \21D4 | ↩ | \21A9 |
| ↺ | ↻ | ⬆ | ⬇ | ➠ | ➤ | ||||||
| ↺ | \21BA | ↻ | \21BB | ⬆ | \2B06 | ⬇ | \2B07 | ➠ | \27A0 | ➤ | \27A4 |
Математические символы
Математика и научная нотация — знак умножения × (правильнее, чем латинская x), деление ÷, проценты ‰, бесконечность ∞.
| Математика | |||||||||||
| × | ÷ | ⁄ | − | ± | ✖ | ||||||
| × | \00D7 | ÷ | \00F7 | ⁄ | \2044 | − | \2212 | ± | \00B1 | ✖ | \2716 |
| < | > | ≤ | ≥ | ≈ | ≠ | ||||||
| < | \003C | > | \003E | ≤ | \2264 | ≥ | \2265 | ≈ | \2248 | ≠ | \2260 |
| ° | & | ∞ | ∅ | ¬ | ∼ | ||||||
| ° | \00B0 | & | \0026 | ∞ | \221E | ∅ | \2205 | ¬ | \00AC | ∼ | \223C |
| ∑ | √ | ∗ | ƒ | ‰ | ∫ | ||||||
| ∑ | \2211 | √ | \221A | ∗ | \2217 | ƒ | \0192 | ‰ | \2030 | ∫ | \222B |
| { | } | ∠ | ⊥ | ∧ | ∨ | ||||||
| { | \007B | } | \007D | ∠ | \2220 | ⊥ | \22A5 | ∧ | \2227 | ∨ | \2228 |
| ¹ | ² | ³ | ½ | ¼ | ¾ | ||||||
| ¹ | \00B9 | ² | \00B2 | ³ | \00B3 | ½ | \00BD | ¼ | \00BC | ¾ | \00BE |
| ∀ | µ | ∇ | ∂ | ∏ | ∝ | ||||||
| ∀ | \2200 | µ | \00B5 | ∇ | \2207 | ∂ | \2202 | ∏ | \220F | ∝ | \221D |
Буквы различных алфавитов
Греческий алфавит — для математики и физики (α-частицы, λ в спектре, Σ в формулах). Умляуты — в немецких, скандинавских и других европейских именах и словах.
| Буквы различных алфавитов | |||||||||||
| α | β | γ | ε | η | λ | ||||||
| α | \03B1 | β | \03B2 | γ | \03B3 | ε | \03B5 | η | \03B7 | λ | \03BB |
| μ | π | ρ | τ | φ | ω | ||||||
| μ | \03BC | π | \03C0 | ρ | \03C1 | τ | \03C4 | φ | \03C6 | ω | \03C9 |
| æ | ð | ë | ï | ö | ü | ||||||
| æ | \00E6 | ð | \00F0 | ë | \00EB | ï | \00EF | ö | \00F6 | ü | \00FC |
Подводные камни и accessibility
Декоративные символы не озвучивает скрин-ридер. ARIA (Web Accessibility Initiative — набор правил доступности) рекомендует прятать чисто декоративные значки от программ голосового чтения. Если стрелка в кнопке — визуальный декор, а не часть текста, оборачивай её в aria-hidden="true":
<button>
Следующая
<span aria-hidden="true">→</span>
</button>
Без этого скрин-ридер прочитает кнопку как «Следующая, стрелка вправо» — шум для пользователя.
Не все шрифты содержат все символы. Редкие математические или старославянские символы могут не отобразиться, если в установленных шрифтах их нет. Браузер покажет квадратик-плейсхолдер или попытается найти системный fallback. Перед использованием экзотических символов проверь в разных браузерах.
Кодировка файла должна быть UTF-8. Если файл сохранён в Windows-1251 или другой однобайтовой кодировке, прямой ввод € или « в HTML сломается. Используй HTML-сущности или числовые коды — они работают независимо от кодировки исходника. Проверь шапку: <meta charset="utf-8"> должна стоять до любого текстового контента.
В CSS content не индексируется поисковиками. Если важный текст вставлен через ::before/::after, Google его не увидит. Декоративные значки — ок, основной контент — всегда в HTML.
Итог
Спецсимволы в HTML вставляются тремя способами: именованной сущностью («), числовым кодом («) или прямым UTF-8-символом («). В CSS — через шестнадцатеричный escape в свойстве content у псевдоэлементов. Таблицы выше покрывают самые частые случаи: кавычки, тире, пробелы, валюту, стрелки, математику, греческий алфавит и умляуты.
Главные практические правила: между числом и единицей или валютой — неразрывный пробел ; в русском тексте — ёлочки « », не машинописные кавычки; длинное тире — для пауз и заменителя «это»; декоративные символы скрывать от скрин-ридеров через aria-hidden.
Комментарии (0)