Qué hace
Codificar convierte texto en referencias de caracteres HTML: solo los cinco reservados (& < > " '), esos más todo lo que no es ASCII, o todo. Se pueden escribir por nombre (é), en decimal (é) o en hexadecimal (é). Decodificar usa la tabla completa de 2125 nombres de HTML5 y las mismas reglas que los navegadores, también para valores de atributo. Debajo se muestran los escapes equivalentes para cadenas JavaScript y para content en CSS.
Cuándo hacen falta
En una página UTF-8 cualquier carácter puede escribirse tal cual. Lo que siempre debe escaparse es & y < en el texto, y la comilla del atributo en su valor. Los 106 nombres heredados de HTML 4 funcionan sin punto y coma, salvo en atributos antes de = o de una letra o cifra, lo que protege URLs como ?a=1©=2.
Escapar no es sanear
Escapar los caracteres reservados protege el texto de la página y los atributos entre comillas frente a XSS, pero no dentro de <script>, de style, de manejadores de eventos ni de URLs.