vs


Para definir charset para HTML5 Doctype, ¿qué notación debo usar?

  1. Corto:

    <meta charset="utf-8" /> 
    
  2. Largo:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
Author: h0ussni, 2011-01-15

7 answers

En HTML5, son equivalentes. Use el más corto, es más fácil de recordar y escribir. El soporte del navegador está bien ya que fue diseñado para la compatibilidad con versiones anteriores.

 988
Author: Quentin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-23 07:14:28

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 debe recordar al declarar su conjunto de caracteres de archivos web como UTF-8:

  1. Guarde sus archivos en codificación UTF-8 sin la marca de orden de bytes (BOM).
  2. Declare la codificación en sus archivos HTML usando meta charset (como arriba).
  3. Su servidor web debe servir sus archivos, declarando la Codificación UTF-8 en el encabezado HTTP Content-Type.

Los servidores Apache están configurados para servir archivos en ISO-8859-1 de forma predeterminada, por lo que debe agregar la siguiente línea a su archivo .htaccess:

AddDefaultCharset UTF-8

Esto configurará Apache para servir sus archivos declarando codificación UTF-8 en el encabezado de respuesta Content-Type, pero sus archivos deben ser guardados en UTF-8 (sin BOM) para empezar.

El bloc de notas no puede guardar sus archivos en UTF-8 sin la lista de materiales. Un editor gratuito que puede es Bloc de notas++. En la barra de menú del programa, seleccione "Codificación > Codificar en UTF-8 sin BOM". También puede abrir archivos y volver a guardarlos en UTF-8 utilizando "Codificación > Convertir a UTF-8 sin BOM".

Más sobre la Marca de Orden de Bytes (BOM) en Wikipedia.

 236
Author: CodeBoy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-23 03:46:09

Otra razón para ir con el corto es que coincide con otras instancias donde 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 consistencia ayuda a reducir los errores y hacer que el código sea más legible.

Tenga en cuenta que el atributo charset no distingue entre mayúsculas y minúsculas. Puede usar UTF-8 o utf-8, sin embargo UTF-8 es más claro, más legible y más preciso.

Además, no hay absolutamente ninguna razón para usar ningún valor que no sea UTF-8 en el atributo meta charset o encabezado de página. UTF-8 es la codificación predeterminada para documentos Web desde HTML4 en 1999 y la única forma práctica de crear páginas Web modernas.

Tampoco debe usar entidades HTML en UTF-8. Los caracteres como el símbolo de copyright deben escribirse directamente. Las únicas entidades que debe usar son para los 5 caracteres de marcado reservados: menor que, mayor que, ampersand, primo, primo doble. Las entidades necesitan un analizador HTML, que puede que no siempre desee utilizar en el futuro, introducen errores, hacen su código es menos legible, aumenta el tamaño de sus archivos y, a veces, decodifica incorrectamente en varios navegadores dependiendo de las entidades que utilizó. Aprenda a escribir / insertar derechos de autor, marca registrada, abrir cita, cerrar cita, apóstrofe, em dash, en dash, bullet, Euro y cualquier otro carácter que encuentre en su contenido, y use esos caracteres reales en su código. El Mac tiene un Visor de caracteres que puede activar en la preferencia del sistema de teclado, y puede encontrar y luego arrastrar y soltar el caracteres que necesita, o utilice el visor de teclado correspondiente para ver qué teclas escribir. Por ejemplo, la marca registrada es la Opción + 2. UTF-8 contiene todos los caracteres y símbolos de cada lenguaje humano escrito. Así que no hay excusa para usar em en lugar de un em dash. No es una mala idea aprender las reglas de puntuación y tipografía también ... por ejemplo, saber que un punto va dentro de una cita cercana, no fuera.

Usar una etiqueta para algo como content-type y encoding es altamente irónico, ya que sin saber esas cosas, no se podía 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 predeterminada 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 bien de cualquier manera ... es lo mismo. Cuando el navegador encuentra la etiqueta meta charset, si la codificación es diferente de lo que es el navegador ya utilizando, el navegador vuelve a cargar la página en la codificación especificada. Es por eso que 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 esta manera puedes usar caracteres UTF-8 en tu título.

Debe guardar sus archivos en codificación UTF-8 sin BOM

Eso no es estrictamente cierto. Si solo tiene caracteres US-ASCII en su documento, puede guardarlo como US-ASCII y servirlo como UTF-8, porque es un subconjunto. Pero si hay caracteres Unicode, está en lo correcto, debe guardar como UTF-8 sin BOM.

Si quieres un buen editor de texto que guarde tus archivos en UTF-8, recomiendo Notepad++.

En 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 aplicaciones, hay un menú en la parte inferior de la ventana del documento donde se especifica la codificación del documento y se puede elija fácilmente "UTF-8 no BOM". Y, por supuesto, puede establecer que como el valor predeterminado para los nuevos documentos en Preferencias.

Pero si su servidor web sirve la codificación en el encabezado HTTP, lo cual es recomendable, ambas [meta etiquetas] son innecesarias.

Eso es incorrecto. Por supuesto, debe establecer la codificación en el encabezado HTTP, pero también debe establecerla en el atributo meta charset para que el usuario pueda guardar la página, desde el navegador en el almacenamiento local y luego abrirla 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í sucesivamente, sin enlaces rotos.

AddDefaultCharset UTF-8

O simplemente puede cambiar la codificación de determinados tipos de archivos así:

AddType text/html;charset=utf-8 html

Un consejo para servir los archivos UTF-8 y Latin-1 (ISO-8859-1) es dar a los archivos UTF-8 una extensión de "texto" y los archivos Latin-1 "txt."

AddType text/plain;charset=iso-8859-1 txt
AddType text/plain;charset=utf-8 text

Finalmente, considere guardar sus documentos con finales de línea Unix, no finales de línea heredados de DOS o (clásicos) Mac, que no ayudan y pueden dañar, 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 finales de línea Unix es un trabajo bien hecho. Usted puede compartir y editar y almacenar y leer y recuperar y confiar en ese documento en muchos contextos. Es lingua franca. Es papel digital.

 79
Author: Simon White,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-05 11:41:25

<meta charset="utf-8"> se introdujo con / para HTML5.

Como se menciona en la documentación, ambos son válidos. Sin embargo, <meta charset="utf-8"> es solo para HTML5 (y más fácil de escribir/recordar).

A su debido tiempo, el viejo estilo está destinado a ser obsoleto en un futuro próximo. Me quedaría con el nuevo <meta charset="utf-8">.

Sólo hay un camino, pero arriba. En el caso de la tecnología, eso es eliminar gradualmente lo viejo (muy, MUY rápido)

Documentación: HTML meta charset Atributo-W3Schools

 29
Author: Omar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-23 04:35:18

Aunque no cuestiono las otras respuestas, creo que vale la pena mencionar lo siguiente.

  1. La notación" larga "(http-equiv) y la" corta " son iguales, lo que ocurra primero gana;
  2. Los encabezados del servidor web anularán todas las etiquetas <meta>;
  3. BOM (marca de orden de bytes) anulará todo , y en muchos casos afectará a html 4 (y probablemente a otras cosas también);
  4. Si no declara ninguna codificación, probablemente obtendrá su texto en " texto alternativo codificación " que se define su navegador. Ni en Firefox ni en Chrome es utf-8;
  5. En ausencia de otras pistas, el navegador intentará leer su documento como si estuviera en ASCII para obtener la codificación, por lo que no puede usar ninguna codificación extraña (utf-16 con BOM debería hacerlo, sin embargo);
  6. Mientras que las especificaciones dicen que la declaración de codificación debe estar dentro de los primeros 512 bytes del documento, la mayoría de los navegadores intentarán leer más que eso.

Puede probar ejecutando echo 'HTTP/1.1 200 OK\r\nContent-type: text/html; charset=windows-1251\r\n\r\n\xef\xbb\xbf<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta charset="windows-1251"><title>привет</title></head><body>привет</body></html>' | nc -lp 4500 y apuntando su navegador a localhost:4500. (Por supuesto, usted querrá cambiar o quitar partes. La parte de la lista de materiales es \xef\xbb\xbf. Tenga cuidado con la codificación de su shell.)

Tenga en cuenta que es muy importante que declare explícitamente la codificación. Dejar que los navegadores adivinen puede conducir a problemas de seguridad.

 17
Author: squirrel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-14 17:07:37

Use <meta charset="utf-8" /> para navegadores web cuando use HTML5.

Use <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> cuando use HTML4 o XHTML, o para analizadores dom obsoletos, como DOMDocument en php

 10
Author: Timo Huovinen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-26 08:08:31

Hay algunas noticias basadas en Mozilla Foundation , y sitepoint

No utilice este valor (http-equiv=content-type) ya que está obsoleto. Prefiera el atributo charset en el elemento meta>. introduzca la descripción de la imagen aquí

 0
Author: user10089632,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-26 16:51:11