html5
  • character-encoding
  • 2012-09-13 171 views 15 likes 
    15

    Un ejemplo de documento HTML recuperada a través de HTTP no tiene:¿Especifica HTML5 una codificación de caracteres predeterminada para documentos HTML si no se proporciona codificación de caracteres?

    • un HTTP Content-Type cabecera
    • un HTML <meta charset="<character encoding>" />
    • un HTML <meta http-equiv='Content-Type' content='Type=text/html; charset=<character encoding>'>

    Con respecto a HTML5, es un valor predeterminado, por ejemplo, UTF-8, asumido como la codificación de caracteres? ¿O depende por completo de la aplicación que lee el documento HTML para elegir un valor predeterminado?

    Respuesta

    14

    el juego de caracteres se determina utilizando estas reglas: override

    1. usuario.
    2. Un parámetro HTTP "charset" en un campo "Content-Type".
    3. Orden de byte Marque antes que cualquier otro dato en el documento HTML en sí.
    4. Una declaración META con un atributo "charset".
    5. Una declaración META con un atributo "http-equiv" establecido en "Content-Type" y un valor establecido para "charset".
    6. Análisis heurístico no especificado.

    ... y luego ...

    1. normalizar la cadena de caracteres de codificación determinada de acuerdo con el juego de caracteres Alias ​​reglas definidas en la Norma Técnica Unicode 22 a juego.
    2. Anular algunas codificaciones problemáticas, es decir, tratar intencionalmente algunas codificaciones como si fueran codificaciones diferentes. La anulación más común es el tratamiento de US-ASCII e ISO-8859-1 como Windows-1252, pero hay varias otras excepciones de codificación enumeradas en esta tabla. Como señala la especificación, "El requisito de tratar ciertas codificaciones como otras codificaciones de acuerdo con la tabla anterior es una violación deliberada de la especificación del Modelo de caracteres W3C".

    Pero lo más importante es:

    Usted debe siempre especificar una codificación de caracteres en cada documento HTML o ocurrirán cosas malas. Puede hacerlo de la manera difícil (encabezado de tipo de contenido HTTP), de la manera más fácil (declaración <meta http-equiv>), o de la nueva manera (atributo <meta charset>), pero hágalo. La web te agradece

    Fuentes:

    +0

    , gracias, aprecio que una codificación de caracteres siempre debe ser definido.Estoy validando documentos sobre los cuales no tengo control y necesito saber si debo volver a una codificación predeterminada si no se especifica ninguno. –

    +1

    Considere usar la misma lógica que usa el validador W3. Es de código abierto, así que puedes mirar su código para ver qué hace. – ThiefMaster

    +1

    Esto realmente no responde la pregunta de por qué se necesita el conjunto de caracteres, y cuál es el conjunto predeterminado que es tan malo. Además, ¿sigue siendo esta la respuesta? Han pasado 2 años desde que se escribió esto, y los navegadores se han actualizado mucho desde entonces. IE no tiene, pero las versiones anteriores se han caído. – trysis

    Cuestiones relacionadas