Codificador y decodificador de entidades HTML

Codifica o decodifica entidades HTML como un navegador, más escapes JS y CSS.

Direction

Escapes for code

JavaScript string

<p class=\"note\">Caf\u00E9 & cr\u00E8me \u2014 \"5 > 3\" isn\'t news. Gi\u00E1: 25.000 \u20AB \u{1F600}</p>

JavaScript (ES5, surrogate pairs)

<p class=\"note\">Caf\u00E9 & cr\u00E8me \u2014 \"5 > 3\" isn\'t news. Gi\u00E1: 25.000 \u20AB \uD83D\uDE00</p>

CSS content string

<p class=\22note\22>Caf\E9 & cr\E8me \2014 \22 5 > 3\22 isn\27t news. Gi\E1: 25.000 \20AB \1F600</p>

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 (&eacute;), en decimal (&#233;) o en hexadecimal (&#xE9;). 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&copy=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.

Preguntas frecuentes

¿Necesito &eacute; en una página UTF-8?

No. Solo &, <, > y la comilla del atributo deben escaparse.

¿Por qué &copy=2 no cambia en un atributo?

En valores de atributo, los nombres heredados sin punto y coma no se decodifican antes de = o de una letra o cifra, para no romper URLs.

¿Escapar HTML evita XSS?

En el texto y en atributos entre comillas sí; en scripts, estilos, eventos y URLs hacen falta otras reglas.