¿Siguen siendo necesarias las entidades con nombre en HTML en la era de los navegadores compatibles con Unicode?

StackOverflow https://stackoverflow.com/questions/25132

Pregunta

Hice mucha programación PHP en los últimos años y una cosa que me sigue molestando es el débil soporte para cadenas Unicode y multibyte (para estar seguro, nativamente no hay ninguna). Por ejemplo, & Quot; htmlentities & Quot; parece ser una función muy utilizada en el mundo de PHP y me pareció absolutamente molesto cuando ha hecho un esfuerzo para mantener cada cadena localizable, solo almacene UTF-8 en su base de datos, solo entregue páginas web UTF-8, etc. De repente , en algún lugar entre su base de datos y el navegador, existe esta función irremediablemente ingenua que finge que cada byte es un carácter y lo desordena todo.

Me gustaría amar simplemente volcar este tipo de funciones, parecen totalmente superfluas. ¿Todavía es necesario en estos días escribir '& amp; auml;' en lugar de '& # 228;'? Al menos mi Firefox parece perfectamente feliz de mostrar incluso los glifos asiáticos más extraños siempre que se sirvan en una codificación adecuada.

Actualización: Para ser más precisos: ¿Se necesitan entidades con nombre para cualquier otra cosa que no sea mostrar etiquetas HTML (como en " & amp; lt; " para " < ")

Actualización 2:

@Konrad: ¿Estás diciendo que no, no se necesitan entidades con nombre?

@Ross: ¿Pero no sería mejor desinfectar la entrada del usuario cuando se ingresa, para mantener mi lógica de salida libre de tales problemas? (suponiendo, por supuesto, que es posible un saneamiento confiable en la entrada, pero entonces, si no es así, ¿puede estar en la salida?)

¿Fue útil?

Solución

Entidades nombradas en " real " Se desaconseja XHTML (es decir, con application/xhtml+xml, en lugar del modo de compatibilidad text/html más utilizado). Además de los cinco definidos en el propio XML (&lt;, &gt;, &amp;, &quot;, &apos;), todos tendrían que definirse en la DTD del DocType particular que está utilizando. Eso significa que su navegador tiene que soportar explícitamente ese DocType, que está lejos de ser un hecho. Las entidades numeradas, por otro lado, obviamente solo requieren una tabla de búsqueda para obtener el carácter Unicode correcto.

En cuanto a si necesita entidades en todos estos días: puede esperar que cualquier navegador moderno admita UTF-8. Por lo tanto, siempre que pueda garantizar que la base de datos, el marcado y el servidor web acuerden servir eso, abandone las entidades.

Otros consejos

Si usa XHTML, en realidad se recomienda no usar entidades con nombre ([cita requerida]). Algunos navegadores (Firefox & # 8230;), al analizar esto como XML (que normalmente no hacen), no leen los archivos DTD y, por lo tanto, no pueden manejar las entidades.

Como la mejor práctica de todos modos es usar UTF-8 como codificación si no hay razones convincentes para hacerlo de otra manera, esto solo significa que el creador de los documentos necesita un editor decente que no solo pueda manejar los documentos sino que también proporcione un buen forma de entrar en los glifos del buzo. OS X realmente no tiene este problema porque los glifos más necesarios se pueden alcanzar a través de & # 8220; alt & # 8221; teclas pero Windows no tiene esta característica.


  

@Konrad: ¿Estás diciendo que no, no se necesitan entidades con nombre?

Precisamente. A menos, por supuesto, que haya restricciones tontas, p. controladores de bases de datos heredados que se ahogan en UTF-8, etc.

Safari parece tener problemas con algunos glifos pero no con otros, puede que no sea necesario pero probablemente sea mejor hacerlo, por supuesto, esta es mi opinión y no está respaldada por nada más que mi observaciones propias.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top