Бесплатные инструменты

HTML-сущности: кодирование / декодирование

Экранирует текст в безопасные HTML-сущности или декодирует именованные и числовые сущности обратно в обычный текст.

Для чего нужны кодировщик и декодировщик HTML-сущностей

Всякий раз, когда вы хотите, чтобы такие символы, как знак «меньше», знак «больше», амперсанд или кавычка, отображались на странице как буквальный текст, а не интерпретировались как разметка, вам нужны HTML-сущности. Этот инструмент экранирует обычный текст в безопасные сущности и декодирует именованные или числовые сущности обратно в символы, которые они обозначают, — и всё это внутри вашего браузера. Это помощник, к которому вы обращаетесь, когда вставляете фрагмент кода в блог или документацию, обеззараживаете предоставленный пользователем текст, прежде чем он попадёт в шаблон, разбираетесь, почему страница отображает как полужирный, а не показывает сам тег, или пытаетесь осмыслить извлечённую строку, испещрённую ' и &.

Как работает кодирование HTML-сущностей

Сущность — это короткий код, замещающий символ, который браузер иначе истолковал бы особым образом. Сущности бывают двух видов. Именованные сущности используют мнемонику между амперсандом и точкой с запятой, например последовательность для неразрывного пробела или для самого амперсанда. Числовые сущности ссылаются на символ напрямую по его кодовой позиции Unicode — либо в десятичном виде, как шаблон © для знака авторского права, либо в шестнадцатеричном с префиксом x, как © для того же символа. Направление кодирования здесь сосредоточено на пяти символах, которые действительно важны для безопасности внутри HTML: амперсанд, две угловые скобки, а также двойные и одинарные кавычки. Экранировать амперсанд первым крайне важно, ведь именно этот символ начинает каждую сущность — перепутайте порядок, и вы дважды экранируете всё остальное.

Декодирование намеренно широкое. Инструмент распознаёт весь диапазон именованных и числовых сущностей, известных самому браузеру, потому что декодирует, передавая строку собственному HTML-парсеру браузера и считывая обратно результат в виде обычного текста. Это значит, что малоизвестная именованная сущность, десятичная ссылка и шестнадцатеричная ссылка, которые все указывают на один и тот же символ, каждая корректно декодируются в этот единственный символ, и вам не нужна таблица соответствий.

Конкретные примеры и сценарии использования

  • Отображение исходного кода на странице: угловые скобки в теге нужно экранировать, чтобы они показывались как символы, а не создавали настоящий элемент.
  • Предотвращение межсайтового скриптинга: экранирование пользовательского ввода перед вставкой его в HTML не даёт случайному тегу скрипта или обработчику событий когда-либо выполниться.
  • Очистка экспортированного или извлечённого содержимого, где кавычки и амперсанды прибыли уже закодированными как сущности и должны снова стать читаемой пунктуацией.
  • Обработка текста, смешивающего языки или символы, где числовые ссылки — самый переносимый способ гарантировать, что символ уцелеет на всём конвейере.

Советы и подводные камни

Самая частая ошибка — экранировать в неправильном порядке или экранировать дважды. Поскольку амперсанд открывает каждую сущность, кодирование текста, уже содержащего сущности, снова экранирует эти амперсанды, так что значение, которое уже было безопасным, становится явно испорченным с удвоенными кодами вроде <. Экранирование также зависит от контекста: экранирование сущностей — правильная защита, когда текст попадает в HTML, но оно не заменяет правильное кодирование в других контекстах, у каждого из которых свои правила — строка JavaScript, URL и инструкция SQL требуют собственного экранирования, а не HTML-сущностей. При декодировании помните, что настоящий HTML-парсер также нормализует или отбрасывает некоторые конструкции, поэтому декодирование лучше применять к настоящим строкам с сущностями, а не пытаться починить произвольную сломанную разметку.

Всё остаётся на вашем устройстве

Этот кодировщик и декодировщик работают на сто процентов локально в вашем браузере; ничто из вставленного вами не загружается, не передаётся и нигде не журналируется. Это стоит подчеркнуть именно потому, что кодирование сущностей — это средство безопасности: текст, который вы обеззараживаете, очень часто является недоверенным или конфиденциальным содержимым, которое вы меньше всего хотели бы отправлять через случайный онлайн-сервис лишь ради очистки. Хранение работы на собственной машине полностью устраняет этот риск и позволяет инструменту работать офлайн. Если вы создаёте страницы или API, которые должны безопасно экранировать свой вывод, наша документация для разработчиков объясняет, где серверное экранирование должно находиться в конвейере обработки запросов, а этот браузерный инструмент — удобный спутник для ручной проверки значений.

Эту страницу нашли по запросу

Реальные поисковые фразы, на которые отвечает эта страница — по ссылкам откроются материалы, раскрывающие тему глубже.