Para definir el conjunto de caracteres para HTML5 Doctype, ¿qué notación debo utilizar?
Corta:
meta charset="utf-8" />
Largo:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
En HTML5, son equivalentes. Utiliza el más corto, es más fácil de recordar y escribir. La compatibilidad con los navegadores está bien ya que se diseñó para la compatibilidad con versiones anteriores.
Ambas formas de la declaración meta charset son equivalentes y deberían funcionar igual en todos los navegadores. Sin embargo, hay algunas cosas que debes recordar al declarar el conjunto de caracteres de tus archivos web como UTF-8:
Los servidores Apache están configurados para servir los archivos en ISO-8859-1 por defecto, por lo que debe añadir la siguiente línea a su archivo .htaccess
:
AddDefaultCharset UTF-8
Esto configurará Apache para servir sus archivos declarando la codificación UTF-8 en la cabecera de respuesta Content-Type, pero sus archivos deben ser guardados en UTF-8 (sin BOM) para empezar.
Notepad no puede guardar sus archivos en UTF-8 sin la lista de materiales. Un editor gratuito que puede hacerlo es Notepad++. En la barra de menú del programa, seleccione "Codificación > Codificar en UTF-8 sin BOM". También puedes abrir archivos y volver a guardarlos en UTF-8 utilizando "Codificación > Convertir a UTF-8 sin BOM".
Más información sobre la marca de orden de bytes (BOM) en Wikipedia.
Otra razón para optar por la corta es que coincide con otros casos en los que se puede especificar un conjunto de caracteres en el marcado. Por ejemplo:
<script type="javascript" charset="UTF-8" src="/script.js"></script>
<p><a charset="UTF-8" href="http://example.com/">Example Site</a></p>
La coherencia ayuda a reducir los errores y a que el código sea más legible.
Tenga en cuenta que el atributo charset no distingue entre mayúsculas y minúsculas. Puede utilizar UTF-8 o utf-8, sin embargo UTF-8 es más claro, más legible, más preciso.
Además, no hay absolutamente ninguna razón para utilizar cualquier otro valor que no sea UTF-8 en el atributo meta charset o en la cabecera de la página. UTF-8 es la codificación por defecto para los documentos web desde HTML4 en 1999 y la única forma práctica de hacer páginas web modernas.
Además, no se deben utilizar entidades HTML en UTF-8. Los caracteres como el símbolo de copyright deben escribirse directamente. Las únicas entidades que debe utilizar son para los 5 caracteres de marcado reservados: menor que, mayor que, ampersand, primo, doble primo. Las entidades necesitan un analizador HTML, que no siempre querrás usar en el futuro, ya que introducen errores, hacen que tu código sea menos legible, aumentan el tamaño de tus archivos, y a veces decodifican incorrectamente en varios navegadores dependiendo de las entidades que hayas usado. Aprenda a escribir/insertar derechos de autor, marcas comerciales, comillas abiertas, comillas cerradas, apóstrofes, guiones em, guiones en, viñetas, euros y cualquier otro carácter que encuentre en su contenido, y utilice esos caracteres reales en su código. El Mac tiene un Visor de Caracteres que puedes activar en la Preferencia de Sistema del Teclado, y puedes encontrar y luego arrastrar y soltar los caracteres que necesitas, o usar el Visor de Teclado correspondiente para ver qué teclas escribir. Por ejemplo, la marca comercial es Opción+2. UTF-8 contiene todos los caracteres y símbolos de todos los idiomas humanos escritos. Así que no hay excusa para usar -- en lugar de un em dash. No es mala idea aprender también las reglas de puntuación y tipografía... por ejemplo, saber que un punto va dentro de una comilla cerrada, no fuera.
Usar una etiqueta <meta> para algo como content-type y encoding es muy es altamente irónico, ya que sin saber esas cosas, no podrías analizar el archivo para obtener el valor de la etiqueta meta.
No, eso no es cierto. El navegador comienza a analizar el archivo como la codificación por defecto del navegador, ya sea UTF-8 o ISO-8859-1. Dado que US-ASCII es un subconjunto de ISO-8859-1 y UTF-8, el navegador puede leer
de cualquier manera... es lo mismo. Cuando el navegador encuentra la etiqueta meta charset, si la codificación es diferente a la que el navegador ya está utilizando, el navegador recarga la página en la codificación especificada. Por eso ponemos la etiqueta meta charset en la parte superior, justo después de la etiqueta head, antes de cualquier otra cosa, incluso el título. De este modo, puede utilizar caracteres UTF-8 en su título.Debe guardar su(s) archivo(s) en codificación UTF-8 sin BOM
Esto no es estrictamente cierto. Si sólo tienes caracteres US-ASCII en tu documento, puedes guardarlo como US-ASCII y servirlo como UTF-8, porque es un subconjunto. Pero si hay caracteres Unicode, tienes razón, debes Guardar como UTF-8 sin BOM.
Si quieres un buen editor de texto que guarde tus archivos en UTF-8, recomiendo el Notepad++.
En el Mac, use Bare Bones TextWrangler (gratis) de Mac App Store, o Bare Bones BBEdit que está en Mac App Store por $39.99 ... muy barato para una herramienta tan grande. En cualquiera de las dos aplicaciones, hay un menú en la parte inferior de la ventana del documento donde se especifica la codificación del documento y se puede elegir fácilmente "UTF-8 sin BOM". Y, por supuesto, puedes establecerla como la predeterminada para los nuevos documentos en las Preferencias.
Pero si su servidor web sirve la codificación en la cabecera HTTP, que es lo recomendado, ambas [metaetiquetas] son innecesarias.
Eso es incorrecto. Por supuesto que debe establecer la codificación en la cabecera HTTP, pero también debe establecerla en el atributo meta charset para que la página pueda ser guardada por el usuario, fuera del navegador en el almacenamiento local y luego abierta de nuevo más tarde, en cuyo caso la única indicación de la codificación que estará presente es el atributo meta charset. También debe establecer una etiqueta base por la misma razón... en el servidor, la etiqueta base es innecesaria, pero cuando se abre desde el almacenamiento local, la etiqueta base permite que la página funcione como si estuviera en el servidor, con todos los activos en su lugar y así, sin enlaces rotos.
AddDefaultCharset UTF-8
O simplemente puedes cambiar la codificación de determinados tipos de archivos de esta manera:
AddType text/html;charset=utf-8 html
Un consejo para servir tanto archivos UTF-8 como Latin-1 (ISO-8859-1) es dar a los archivos UTF-8 una extensión "text" y a los Latin-1 "txt".
AddType text/plain;charset=iso-8859-1 txt
AddType text/plain;charset=utf-8 text
Por último, considere la posibilidad de guardar sus documentos con los finales de línea de Unix, no con los finales de línea heredados de DOS o (clásicos) de Mac, que no ayudan y pueden perjudicar, especialmente en el futuro, a medida que nos alejamos cada vez más de esos sistemas heredados. Un documento HTML con HTML5 válido, codificación UTF-8 y terminaciones de línea Unix es un trabajo bien hecho. Puedes compartir y editar y almacenar y leer y recuperar y confiar en ese documento en muchos contextos. Es una lengua franca. Es papel digital.