Кодирует <, >, & и кавычки для HTML или возвращает сущности обратно в символы.
Если в строке есть < или & и вы кладёте её в HTML, браузер примет это за разметку. Кодирование превращает такие знаки в сущности. Декодирование возвращает сущности в символы, когда вы читаете исходник. Это не экранирование JSON и не вырезание тегов: меняются символы.
&, <, > и оба вида кавычек.&#xHHHH;. Снимите, когда страница в UTF-8 и меняться должны только знаки разметки.中, шестнадцатеричные вроде 中 и короткий список имён: amp, lt, gt, quot, apos, nbsp, copy, reg, trade, mdash, ndash, hellip, laquo, raquo, bull, middot, euro, pound, yen, cent, sect, para, deg, plusmn, times, divide, micro. Имени нет в списке — оно остаётся как есть.Кодирование не оборачивает результат в тег и не добавляет doctype. Уже начатый сущностью & при повторном кодировании экранируется ещё раз, и получается &. Одно декодирование снимает один слой. Имена вне списка, в том числе многие из HTML5, остаются как вы их вставили. Числовая сущность, которая не является допустимым кодом символа, остаётся текстом.
Если шло кодирование, сам амперсанд экранирован, и вы видите исходник сущности. Переключитесь на декодирование, чтобы известное имя стало символом.
Страница покрывает имена из обычного текста плюс любую числовую сущность. Неизвестное имя сохраняется, чтобы опечатка была видна, а не пропадала.