Cuándo codificar
Solo cinco caracteres tienen significado en el texto y los atributos HTML: & inicia una entidad, < y > delimitan etiquetas, y " y ' cierran valores de atributo. Escápalos siempre que insertes texto no fiable en una página y estarás a salvo de la inyección de marcado (XSS en contexto HTML). Todo lo demás, incluidos acentos, emoji y símbolos, puede escribirse literalmente en un documento UTF-8; codificarlo como é es una costumbre de la era Latin-1 y hace el código fuente más difícil de leer.
Tres formas de escribir un carácter
| Forma | Ejemplo | Notas |
|---|---|---|
| Con nombre | é → | 2.125 nombres en HTML5; legibles, pero en XML sin DTD solo funcionan los cinco básicos. |
| Decimal | é | Funciona en todas partes, también en XML y SVG. |
| Hex | é | Coincide con la notación de punto de código Unicode U+00E9; también universal. |
Trampas
es un carácter real (U+00A0). Sobrevive al copiar y pegar como un espacio de no separación invisible y hace fallar comparaciones de cadenas; el inspector Unicode lo encuentra.- Los navegadores aceptan algunas entidades antiguas sin punto y coma (
©,&), así que una URL como?a=1©=2en un atributo sin escapar se convierte en?a=1©=2. Escribe siempre&en los atributos. - La doble codificación (
&lt;) aparece en la página como un<literal; codifica una vez, en el punto de salida. - En cadenas de JavaScript las entidades HTML no se decodifican; usa ahí
\u00E9, o asignatextContenty olvídate de escapar.
Preguntas
¿Qué es ?
Un espacio de no separación, U+00A0: un espacio que impide el salto de línea y no se colapsa con los espacios adyacentes. Úsalo entre un número y su unidad (10 km) y en ningún otro sitio.
¿Debo codificar tildes y acentos?
No si la página se sirve como UTF-8, como debería toda página moderna. Escribe é directamente. Codifica solo si el archivo puede guardarse en otro juego de caracteres o si necesitas hacer visible un carácter invisible en el código fuente.
¿Qué entidades funcionan en XML y SVG?
Solo &, <, >, " y ', además de las referencias numéricas. Las entidades con nombre como © provocan un error de análisis en XML si no están declaradas.
¿Cómo muestro código HTML en una página web?
Codifícalo: cada < se convierte en <, cada & en &. Pega el código en el campo de texto con la primera opción de codificación y copia la salida HTML en un bloque <pre><code>.