Введите © 🙂 &unknown;. Один проход даёт © 🙂 &unknown;. Числовая ссылка разрешается, открывшаяся именованная ждёт второго прохода, неизвестная остаётся.

Второй проход выполняется явно

Если намеренно отправить первый результат снова, © станет ©. EntityCodec не повторяет декодирование скрыто.

Проверьте точное место использования

Кодирование символьных ссылок меняет представление текста, а не уровень доверия к данным. Оставляйте результат текстом, пока целевая система не применит правильное для контекста экранирование или санитизацию. После вставки сравните результат полностью. Для воспроизводимой проверки храните один буквальный пример рядом с ожидаемой кодированной формой, дважды выполните один и тот же профиль и сверьте каждый амперсанд, точку с запятой, кодовую точку, пробел и перенос. Затем проверьте текстовую привязку целевой системы на безвредных характерных символах. Если система нормализует, повторно декодирует или рендерит значение, документируйте это отдельно: такое поведение уже находится за границей EntityCodec.