Cuándo debería uno usar entidades HTML

Esto me ha estado confundiendo por un tiempo. Con el advenimiento de UTF-8 como el estándar de facto en el desarrollo web, no estoy seguro de en qué situaciones se supone que debo usar las entidades html y para cuáles debería usar el carácter UTF-8.

Ejemplos: em dash, ampersand, etc.

Por favor, arrojen luz sobre este tema. Será apreciado.

En general, no necesita utilizar entidades de caracteres HTML si su editor admite Unicode. Las entidades pueden ser útiles cuando:

  • Su teclado no admite el carácter que necesita para escribir. Por ejemplo, muchos teclados no tienen em-dash o el símbolo de copyright.
  • Su editor no es compatible con Unicode (muy común hace algunos años, pero probablemente no hoy).
  • Desea hacer que sea explícito en la fuente lo que está sucediendo. Por ejemplo, el   el código es más claro que el carácter de espacio en blanco correspondiente.
  • Debe escapar caracteres especiales HTML como < , & , o " .

En base a los comentarios que he recibido, analicé esto un poco más. Parece que actualmente la mejor práctica es renunciar al uso de entidades HTML y usar el personaje real UTF-8 en su lugar . Los motivos enumerados son los siguientes:

  1. Las codificaciones UTF-8 son más fáciles de leer y editar para aquellos que entienden lo que significa el personaje y saben cómo escribirlo.
  2. Las codificaciones UTF-8 son tan ininteligibles como las codificaciones de entidades HTML para aquellos que no las entienden, pero tienen la ventaja de representarlas como caracteres especiales en lugar de codificaciones decimales o hexadecimales difíciles de entender.

Siempre que la encoding de su página esté configurada correctamente en UTF-8, debe usar el carácter real en lugar de una entidad HTML. Leí varios documentos sobre este tema, pero los más útiles fueron:

  • UTF-8: El secreto de la encoding de caracteres
  • Wikipedia Personajes Especiales Ayuda

Desde el UTF-8: El secreto del artículo de encoding de caracteres :

Wikipedia es un excelente estudio de caso para una aplicación que originalmente usaba ISO-8859-1 pero cambió a UTF-8 cuando se volvió demasiado engorroso para admitir idiomas extranjeros. Los bots pasarán a través de artículos y convertirán entidades de personajes a sus personajes reales correspondientes por el bien de la facilidad de uso y búsqueda .

Ese artículo también da un buen ejemplo de encoding china. Aquí está el ejemplo abreviado en aras de la pereza:

UTF-8:

這兩個字是甚麼意思

Entidades HTML :

這兩個字是甚麼意思

Las codificaciones de entidades UTF-8 y HTML son insignificantes para mí, pero al menos la encoding UTF-8 es reconocible como un idioma extranjero y se procesará correctamente en un cuadro de edición. El artículo continúa diciendo lo siguiente sobre la versión HTML codificada por entidad:

¡Extremadamente inconveniente para aquellos de nosotros que realmente sabemos qué entidades de carácter son, totalmente ininteligibles para usuarios pobres que no lo hacen! Incluso las entidades de caracteres “inteligibles” ligeramente más fáciles de usar como & theta; dejará a los usuarios que no están interesados ​​en aprender HTML rascándose la cabeza. Por otro lado, si ven θ en un cuadro de edición, sabrán que es un personaje especial y lo tratarán como corresponde, incluso si no saben cómo escribir ese personaje ellos mismos.

Como han señalado otros, aún debe usar entidades HTML para caracteres XML reservados (ampersand, less-than, greater-than).

Personalmente hago todo en utf-8 desde hace mucho tiempo, sin embargo, en una página html, siempre necesitas convertir signos y signos (&), mayores que (>) y menores que (< ) a sus entidades equivalentes, & amp ;, & gt; y & lt;

Además, si tiene la intención de hacer algo de progtwigción usando texto utf-8, hay algunas cosas que debe observar.

  • XML necesita algunas líneas adicionales para validar al usar entidades.
  • Algunas bibliotecas no funcionan bien con utf-8. Por ejemplo, PHP en algunas distribuciones de Linux cayó soporte completo para utf-8 en sus bibliotecas de expresiones regulares.
  • Es más difícil limitar el número de caracteres en un texto que usa entidades html, porque una sola entidad usa muchos caracteres. También siempre existe el riesgo de reducir la entidad a la mitad.

Las entidades pueden comprar cierta compatibilidad con clientes con muerte cerebral que no entienden las codificaciones correctamente. No creo que esto incluya navegadores actuales, pero nunca se sabe qué otros tipos de progtwigs podrían estar golpeándote.

Más útil, sin embargo, es que las entidades HTML lo protegen de sus propios errores: si configura incorrectamente algo en el servidor y termina publicando una página con un encabezado HTTP que dice que es ISO-8859-1 y una etiqueta META que dice que es UTF-8 , al menos su & mdash; es siempre funcionará.

No utilizaría UTF-8 para caracteres que se confunden fácilmente visualmente. Por ejemplo, es difícil distinguir un emdash de un espacio negativo, o especialmente un espacio que no se rompe. Para estos personajes, definitivamente usa entidades.

Para caracteres que sean fáciles de entender visualmente (como los ejemplos chinos anteriores), siga adelante y use UTF-8 si lo desea.

Las entidades HTML son útiles cuando desea generar contenido que se va a incluir (dinámicamente) en páginas con (varias) codificaciones diferentes. Por ejemplo, tenemos contenido de etiqueta blanca que se incluye en las páginas web con encoding ISO-8859-1 y UTF-8 …

Si la conversión de juego de caracteres de / a UTF-8 no era un desastre tan grande y poco confiable (siempre se tropieza con algunos caracteres y algunas herramientas que no se convierten correctamente), la estandarización en UTF-8 sería el camino a seguir.

Si sus páginas están codificadas correctamente en utf-8, no debería necesitar entidades html, solo use los caracteres que desee directamente.

Todas las respuestas anteriores tienen sentido para mí.

Además: depende principalmente del editor que intente utilizar y el idioma del documento. Como requisito mínimo para el editor es que sea compatible con el idioma del documento. Eso significa que si su texto está en japonés, tenga cuidado con el uso de un editor que no los muestre (es decir, no haya entidades para el documento en sí). Si es en inglés, incluso puedes usar un viejo editor similar a vim y usar entidades solo para el relativo rare y copy; y amigos. Por supuesto: & gt; para> y otras HTML-especiales todavía necesitan escapes. Pero incluso con los otros idiomas latin-1 (alemán, francés, etc.), escribir ä es un dolor en tu sabes dónde …

Además, personalmente escribo entidades para caracteres invisibles y aquellos que se parecen a estándares-ascii y por lo tanto, se confunden fácilmente. Por ejemplo, hay u1173 (que parece un guion en algunos conjuntos de caracteres) o u1175, que se parece a la barra vertical. Yo usaría entidades para esos en cualquier caso.