Кодувальник і декодер HTML-сутностей

Екрануйте текст, щоб його можна було безпечно вставити в HTML, або перетворіть сутності на кшталт & і € назад на читабельні символи.

Працює в браузеріБез реєстраціїНічого не завантажується

Закодовано

Як користуватися: Кодувальник HTML-сутностей

  1. Виберіть Кодувати, щоб екранувати текст, або Декодувати, щоб перетворити сутності назад на символи.
  2. Під час кодування виберіть, що екранувати: лише спецсимволи HTML, також усі не-ASCII символи або все, крім літер і цифр.
  3. Виберіть іменовані сутності (é), десяткові (é) або шістнадцяткові (é).
  4. Скопіюйте результат. Під час декодування невідомі сутності перелічуються, щоб ви помітили описки.

Навіщо екранувати HTML?

П'ять символів мають у HTML особливе значення: & починає сутність, < і > обмежують теги, а " і ' закривають значення атрибутів. Якщо користувацький текст із ними вставити на сторінку без екранування, він може зламати верстку або, що гірше, впровадити скрипти (міжсайтовий скриптинг, XSS). Екранування перетворює їх на &amp;, &lt;, &gt;, &quot; і &#x27;, які браузер показує як текст.

Іменовані, десяткові й шістнадцяткові сутності

Будь-який символ Unicode можна записати числовим посиланням: десятковим &#8364; або шістнадцятковим &#x20AC; для €. Багато поширених символів мають і читабельне ім'я, наприклад &euro;, &copy; або &nbsp;. Числові посилання працюють скрізь, зокрема в XML, де визначено лише п'ять іменованих сутностей. Іменовані сутності легше читати у вихідному коді.

Чи потрібно кодувати не-ASCII символи?

Ні, якщо сторінка віддається в UTF-8, як майже всі сучасні сайти (<meta charset="utf-8">). Символи на кшталт é, ü або 日本 можна писати напряму. Кодувати їх корисно для застарілих систем, шаблонів листів або коли якийсь етап обробки псує не-ASCII текст.

Екранування залежить від контексту

Екранування HTML-сутностями захищає текст усередині елементів і атрибутів у лапках. Його недостатньо для значень у блоках <script>, вбудованих обробниках подій, CSS або URL — кожен із них має власне кодування. Віддавайте перевагу автоекрануванню вашого фреймворку (React, Vue, Jinja, Blade), а не ручному збиранню рядків.

Поширені запитання

Які символи обов'язково екранувати в HTML?
У текстовому вмісті обов'язкові & і <. У значеннях атрибутів екрануйте також використану лапку. Екранувати всі п'ять (& < > " ') — безпечний варіант за замовчуванням.
Що таке &amp;nbsp;?
Нерозривний пробіл (U+00A0). Виглядає як пробіл, але не допускає перенесення рядка й не зливається із сусідніми пробілами.
Чому &amp;copy2024 декодується в ©2024?
Заради зворотної сумісності браузери декодують кілька застарілих сутностей, наприклад &copy, &amp і &lt, навіть без крапки з комою в кінці. Цей декодер дотримується того самого правила. У власному HTML завжди ставте крапку з комою.
Апостроф — це &amp;apos; чи &amp;#39;?
&apos; допустимий у HTML5 і XML, але не в HTML 4, тому числові &#39; або &#x27; — найсумісніший варіант, і саме його видає цей кодувальник.

Схожі інструменти