Entidades HTML y referencias de caracteres
Las referencias de caracteres HTML (llamadas comúnmente entidades HTML) representan caracteres en el marcado HTML mediante nemónicos predefinidos o puntos de código numéricos de Unicode. Las referencias con nombre existen para un conjunto finito y autoritativo de 2,125 caracteres canónicos definidos por el WHATWG HTML Living Standard, mientras que las referencias numéricas decimales (&#[dec];) y hexadecimales (&#x[hex];) pueden representar cualquier valor escalar válido de Unicode. Utilice las referencias de caracteres para escapar con seguridad los delimitadores sensibles a la sintaxis (&, <, >, ", ') o para especificar caracteres cuando la codificación del código fuente está restringida.
Entidades HTML comunes y referencia rápida para desarrolladores
Las referencias de caracteres HTML más utilizadas en desarrollo web, tipografía, fórmulas matemáticas y símbolos monetarios. Haga clic en cualquier formato de código para copiarlo al instante en el portapapeles.
Caracteres sensibles a la sintaxis y escape consciente del contexto
HTML define cinco caracteres delimitadores reservados que provocan cambios de estado del analizador: & (introductor de entidades), < (apertura de etiqueta), > (cierre de etiqueta), " (delimitador de atributo) y ' (delimitador de atributo). Escapar estos caracteres es esencial para evitar ambigüedades de análisis y vulnerabilidades de Cross-Site Scripting (XSS). Que el escape sea obligatorio depende estrictamente del contexto de análisis.
| Car. | Entidad con nombre | Decimal | Hex | Unicode | Por qué se escapa y riesgo de análisis |
|---|---|---|---|---|---|
| & |
U+0026
|
Initiates character references. An unescaped & followed by text resembling an entity name (e.g. ©) will be parsed as a character reference unexpectedly. | |||
| < |
U+003C
|
Initiates HTML tag open syntax. In text content, a raw < causes the HTML tokenizer to enter tag-open state. | |||
| > |
U+003E
|
Closes HTML tags. In modern HTML text content, raw > does not open or break tags, but escaping prevents ambiguous delimiter interpretation. | |||
| " |
U+0022
|
Terminates double-quoted attribute values prematurely. Safe as literal character in text content. | |||
| ' |
U+0027
|
Terminates single-quoted attribute values prematurely. Safe as literal character in text content. |
Requisitos de escape dependientes del contexto
La especificación HTML establece restricciones de escape diferentes según el lugar del documento en el que aparezca el carácter:
Contenido textual HTML
Dentro del texto del cuerpo de elementos HTML estándar (p. ej. párrafos, spans, encabezados):
- & → Debe escaparse como
&para evitar el análisis involuntario de entidades. - < → Debe escaparse como
<para evitar que el texto posterior se interprete como un nuevo nombre de etiqueta. - > → Se recomienda como
>, aunque técnicamente está permitido salvo que vaya precedido de dos guiones o de marcado de cierre. - " y ' → Seguros sin escape en el texto del cuerpo.
Atributos con comillas dobles
Dentro de valores de atributo entre comillas dobles (p. ej. title="...", href="..."):
- " → Debe escaparse como
"(termina prematuramente el valor del atributo si no se escapa). - & → Debe escaparse como
&cuando va seguido de un carácter de nombre o de una almohadilla. - < y > → Seguros entre comillas, pero se recomienda escaparlos por coherencia.
- ' → Seguro sin escape entre comillas dobles.
Atributos con comillas simples
Dentro de valores de atributo entre comillas simples (p. ej. title='...'):
- ' → Debe escaparse como
'o'(termina prematuramente el valor del atributo si no se escapa). - & → Debe escaparse como
&. - " → Seguro sin escape entre comillas simples.
- < y > → Seguros entre comillas, se recomienda escaparlos.
Atributos sin comillas (peligroso)
En atributos sin comillas (p. ej. class=main):
- Espacios, tabuladores, saltos de línea → Estrictamente prohibidos (rompen la tokenización).
- " ' = < > ` & → Deben escaparse o evitarse estrictamente.
- Mejor práctica: ponga siempre todos los valores de atributos HTML entre comillas dobles. Nunca use atributos sin comillas para contenido dinámico.
Directorio de referencias de caracteres HTML
Directorio autoritativo y conforme a los estándares de todas las 2,125 referencias de caracteres con nombre canónicas del WHATWG, junto con sus representaciones numéricas exactas decimales (&#[dec];) y hexadecimales (&#x[hex];). Haga clic en cualquier valor para copiarlo al portapapeles.
| Car. | Referencia con nombre | Código decimal | Código hexadecimal | Punto de código | Categoría | Copiar |
|---|---|---|---|---|---|---|
| Æ |
|
Symbols | ||||
| & |
|
Common | ||||
| Á |
|
Symbols | ||||
| Ă |
|
Symbols | ||||
| Â |
|
Symbols | ||||
| А |
|
Symbols | ||||
| 𝔄 |
|
Symbols | ||||
| À |
|
Symbols | ||||
| Α |
|
Greek | ||||
| Ā |
|
Symbols | ||||
| ⩓ |
|
Math | ||||
| Ą |
|
Symbols | ||||
| 𝔸 |
|
Symbols | ||||
| |
|
Symbols | ||||
| Å |
|
Symbols | ||||
| 𝒜 |
|
Symbols | ||||
| ≔ |
|
Math | ||||
| Ã |
|
Symbols | ||||
| Ä |
|
Symbols | ||||
| ∖ |
|
Math | ||||
| ⫧ |
|
Math | ||||
| ⌆ |
|
Symbols | ||||
| Б |
|
Symbols | ||||
| ∵ |
|
Math | ||||
| ℬ |
|
Symbols | ||||
| Β |
|
Greek | ||||
| 𝔅 |
|
Symbols | ||||
| 𝔹 |
|
Symbols | ||||
| ˘ |
|
Symbols | ||||
| ℬ |
|
Symbols | ||||
| ≎ |
|
Math | ||||
| Ч |
|
Symbols | ||||
| © |
|
Common | ||||
| Ć |
|
Symbols | ||||
| ⋒ |
|
Math | ||||
| ⅅ |
|
Symbols | ||||
| ℭ |
|
Symbols | ||||
| Č |
|
Symbols | ||||
| Ç |
|
Symbols | ||||
| Ĉ |
|
Symbols | ||||
| ∰ |
|
Math | ||||
| Ċ |
|
Symbols | ||||
| ¸ |
|
Symbols | ||||
| · |
|
Symbols | ||||
| ℭ |
|
Symbols | ||||
| Χ |
|
Greek | ||||
| ⊙ |
|
Math | ||||
| ⊖ |
|
Math | ||||
| ⊕ |
|
Math | ||||
| ⊗ |
|
Math |
Referencias con nombre frente a códigos numéricos (decimal y hexadecimal)
HTML proporciona tres sintaxis distintas para referenciar caracteres: las referencias con nombre mnemónicas, las referencias decimales en base 10 y las referencias hexadecimales en base 16. Comprender las capacidades y los límites de cada formato es fundamental para la ingeniería web moderna.
| Car. | Nombre del carácter | Referencia con nombre | Referencia decimal | Referencia hexadecimal | Punto de código |
|---|---|---|---|---|---|
| © | Copyright Sign |
U+00A9
|
|||
| & | Ampersand |
U+0026
|
|||
| € | Euro Sign |
U+20AC
|
|||
| 😀 | Grinning Face (No named entity) | Ninguna (solo numéricas) |
U+1F600
|
Referencias de caracteres con nombre
Sintaxis: &[nombre]; (p. ej. ©, &)
- Vocabulario finito: existen exactamente 2,125 nombres canónicos en la especificación del WHATWG. Ninguna otra entidad con nombre es válida.
- Estricta distinción de mayúsculas: los nombres de los caracteres distinguen mayúsculas de minúsculas.
Ε(Ε) produce la letra griega Épsilon mayúscula (U+0395), mientras queε(ε) produce la letra griega épsilon minúscula (U+03B5). - Legibilidad: altamente mnemónica y fácil de leer y auditar por humanos en las plantillas de código fuente.
- Limitación de emojis: los emojis modernos (como 😀 U+1F600 o ❤️ U+2764) tienen cero referencias con nombre. Escribir
&grinning;o&heart;se renderizará literalmente como texto roto.
Referencias numéricas decimales
Sintaxis: &#[decimal]; (p. ej. ©, €)
- Cobertura total de Unicode: puede representar cualquiera de los 1,112,064 valores escalares de Unicode (de U+0000 a U+10FFFF, excluidos los sustitutos U+D800..U+DFFF).
- Soporte universal de analizadores: compatible con el 100 % de los analizadores HTML, XML, SVG y SGML sin requerir catálogos de entidades externos ni DTD.
- Conversión a base 10: requiere convertir los puntos de código hexadecimales de Unicode a decimales (p. ej. U+20AC → 8364).
- Trampa del Windows-1252 heredado: en los antiguos documentos SGML/HTML 4, los números 128–159 solían usarse para caracteres de Windows-1252 (p. ej.
€para €). Los analizadores HTML5 modernos remapean automáticamente estos puntos de control, pero los autores que siguen el estándar deben usar los puntos de código Unicode reales (p. ej.€).
Referencias numéricas hexadecimales
Sintaxis: &#x[hex]; o &#X[hex]; (p. ej. ©, €)
- Alineación directa con Unicode: se corresponde directamente con los puntos de código Unicode sin conversión matemática (p. ej. U+20AC →
€). - Preferidas para herramientas de desarrollo: dado que las especificaciones de Unicode, las tablas de fuentes y los IDE referencian los caracteres en hexadecimal (U+XXXX), las referencias hexadecimales reducen la carga cognitiva y los errores de conversión.
- 'x' y dígitos sin distinción de mayúsculas: el indicador inicial puede ser
xoX, y los dígitos hexadecimalesa-foA-Fse analizan de forma equivalente en los agentes de usuario conformes. - Ceros a la izquierda opcionales:
A,AyAse evalúan todos como 'A' (U+0041).
Secuencias de entidades de múltiples puntos de código (las 93 referencias compuestas)
Un error común entre los ingenieros de software es creer que cada referencia con nombre de HTML se corresponde exactamente con un punto de código Unicode. En realidad, el WHATWG HTML Living Standard define exactamente 93 referencias de caracteres con nombre que se expanden en secuencias de dos puntos de código Unicode distintos.
Cómo procesan los analizadores HTML las secuencias compuestas
Cuando un tokenizador conforme a HTML5 encuentra una entidad con nombre como ≂̸, el estado de referencia de caracteres con nombre coincide con la cadena completa y emite dos valores escalares Unicode distintos: U+2242 (Asymptotically Equal To) seguido inmediatamente de U+0338 (Combining Long Solidus Overlay).
| Car. | Referencia con nombre | Secuencia de puntos de código Unicode | Código decimal compuesto | Código hexadecimal compuesto |
|---|---|---|---|---|
| ≂̸ | ≂̸ |
U+2242 U+0338 |
≂̸ |
≂̸ |
| =⃥ | =⃥ |
U+003D U+20E5 |
=⃥ |
=⃥ |
| ∩︀ | ∩︀ |
U+2229 U+FE00 |
∩︀ |
∩︀ |
| ≡⃥ | ⪈ |
U+2265 U+0338 |
≱ |
≱ |
| ≤⃥ | ⪇ |
U+2264 U+0338 |
≰ |
≰ |
Implicaciones técnicas críticas:
Una sintaxis de entidad numérica HTML (&#[dec];) solo acepta un único valor escalar entero. Para representar numéricamente una entidad de múltiples puntos de código, debe concatenar dos referencias numéricas adyacentes (p. ej. ≂̸).
En JavaScript, C# y Java, las secuencias compuestas pueden constar de 2 o 3 unidades de código de 16 bits (especialmente si se combinan con pares sustitutos). Utilice siempre Array.from(str) o iteradores conscientes de Unicode en lugar de str.length para contar caracteres.
La mayoría de las referencias compuestas emparejan un operador o símbolo matemático base con una marca diacrítica combinante (como U+0338 Combining Long Solidus Overlay). Los motores modernos de renderizado de fuentes (HarfBuzz, DirectWrite, CoreText) los conforman en un único glifo visual.
Mejores prácticas: edición directa en UTF-8 frente a escape de caracteres
En la ingeniería web moderna, ¿cuándo se deben escribir caracteres Unicode directamente y cuándo hay que usar referencias de caracteres HTML? Seguir las directrices basadas en los estándares evita la hinchazón del código fuente, mejora el mantenimiento y elimina vulnerabilidades de seguridad.
Edición directa en UTF-8 (práctica estándar)
Todo documento HTML moderno debería comenzar con <meta charset="utf-8">. Cuando UTF-8 está activo, conviene escribir los caracteres nativos directamente en las plantillas:
<p>© 2026 CopyCharacter. All rights reserved. Price: €19.99</p>
<p>© 2026 CopyCharacter. All rights reserved. Price: €19.99</p>
- Carga menor: los bytes UTF-8 sin escape ocupan menos ancho de banda que las cadenas de entidades de 6–8 bytes (p. ej.
€ocupa 3 bytes en UTF-8 frente a los 6 bytes de€u 8 bytes de€). - Ergonomía del desarrollador: el texto internacional en francés, español, árabe, japonés o alemán sigue siendo legible de forma natural sin traducción mental.
- Compatibilidad total con Unicode: los emojis y los símbolos regionales son compatibles de forma nativa.
Cuándo SÍ son obligatorias las referencias de caracteres
Las referencias de caracteres son estrictamente necesarias en cuatro escenarios concretos:
-
Delimitadores de sintaxis:
&,<y>sin escape en el contenido textual, o comillas (",') dentro de valores de atributo coincidentes. -
Caracteres invisibles / no imprimibles: espacio duro (
), exclusor de no separación de anchura cero (‌) y conector de anchura cero (‍). Escribirlos en bruto puede provocar su eliminación accidental o su reformateo por parte de los linters de IDE, minificadores y formateadores de código. -
Glifos ambiguos: caracteres visualmente indistinguibles de los caracteres ASCII (p. ej. el signo de interrogación griego
?/;frente al punto y coma;, o la 'a' cirílica minúscula frente a la 'a' latina). - Entornos restringidos a ASCII: transporte de correo SMTP heredado de 7 bits, herramientas SGML antiguas o sistemas incapaces de procesar flujos UTF-8 multibyte.
La trampa de las entidades sin punto y coma y la corrupción de URL
Peculiaridad histórica del WHATWG
El WHATWG HTML Living Standard documenta 106 entidades con nombre heredadas que históricamente permitían omitir el punto y coma final (p. ej. &, ©, >, <, ", ®). Existe únicamente por compatibilidad con las páginas web rotas de los años noventa.
<a href="search.php?category=books©=true">View Books</a>
search.php?category=books©=true ← ¡Clave del parámetro corrompida al glifo de copyright!
<a href="search.php?category=books&copy=true">View Books</a>
Codificador y decodificador por lotes de entidades HTML
¿Necesita codificar documentos completos, sanear entradas de usuario o decodificar entidades HTML ofuscadas de vuelta a texto UTF-8 sin escape? Use el codificador de entidades HTML online y gratuito de CopyCharacter. Convierta al instante con opciones para entidades con nombre, códigos decimales (&#[dec];) o códigos hexadecimales (&#x[hex];).
Cumplimiento de estándares y procedencia del conjunto de datos
Cada referencia de caracteres, mapeo de puntos de código y comportamiento del analizador documentado en esta página deriva directamente de las especificaciones oficiales mantenidas por el Web Hypertext Application Technology Working Group (WHATWG), el World Wide Web Consortium (W3C) y el Unicode Consortium.
00289ceb64acb3071f854c90e80c72f519bb2c3af5e8801f2e60468637cd911f
Citas normativas:
- WHATWG HTML Living Standard §13.5 Named character references — https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references. La autoridad definitiva sobre las referencias de caracteres con nombre válidas, los estados del tokenizador del analizador y los algoritmos de consumo de referencias de caracteres.
- W3C Recommendation: HTML 5.2 §8.1.4 Character references — https://www.w3.org/TR/html52/syntax.html#character-references. Detalla las reglas de sintaxis de las referencias de caracteres numéricas decimales, numéricas hexadecimales y con nombre.
- El Consorcio Unicode: The Unicode Standard, Version 18.0 — El capítulo 3 (Conformance) establece la validez de los valores escalares Unicode (U+0000..U+D7FF y U+E000..U+10FFFF) y las prohibiciones de los límites de los sustitutos.