2012-03-01 41 views
9

Tengo un código HTML que contiene algunos caracteres forign (€, ó, á). El documento HTML se guarda como UTF-8 sin BOM. Cuando veo la página en el navegador, los caracteres forign parecen ser reemplazados con combinaciones de caracteres extraños (â,¬, ó, Ã). Solo cuando guardo mi documento HTML como UTF-8 con BOM, los caracteres se muestran correctamente.UTF-8 html sin BOM muestra caracteres extraños

Realmente preferiría no tener que incluir una lista de materiales en mis archivos, pero ¿alguien tiene alguna idea de por qué podría hacer esto? y una forma de arreglarlo? (aparte de incluir una lista de materiales)

+1

¿Identifica el código HTML como UTF-8 codificados? –

+0

¿Ha especificado el juego de caracteres en una etiqueta 'meta'? –

+0

¿Hizo las cosas apropiadas con su servidor y metaetiquetas para informar al navegador que el contenido es, de hecho, UTF-8? –

Respuesta

14

Probablemente no esté especificando el juego de caracteres correcto en su archivo HTML. La BOM (gracias @Jukka) envía el navegador al modo UTF-.8; en su defecto, debe utilizar otros medios para declarar el documento UTF.8.

Si tiene acceso a la configuración de su servidor, es posible que desee asegurarse de que el servidor no esté enviando la información incorrecta del juego de caracteres. Ver p. How to change the default encoding to UTF-8 for Apache?

Si usted tiene acceso sólo a su HTML, añadiendo esta etiqueta meta en la cabeza de su documento debe hacer el truco:

<meta http-equiv='Content-Type' content='Type=text/html; charset=utf-8'> 

o como @Mathias señala, el nuevo HTML 5

<meta charset="utf-8"> 

(solo válido si utiliza un doctype HTML 5, contra el cual ya no hay un buen argumento, incluso si no utiliza el marcado HTML 5).

+5

+1. Hoy en día puedes usar ''. (Si no está utilizando el DOCTYPE HTML5 en 2012, lo está haciendo mal.) –

+0

@Mathias buen punto, agregado, gracias –

+0

Los síntomas sugieren que el navegador probado en realidad escucha la lista de materiales: al parecer, ni el servidor ni el el propio documento declara la codificación, lo que obliga al navegador a inferir o adivinar la codificación; y parece que toma una BOM como indicando UTF-8, lo que tiene perfecto sentido (y en ausencia de BOM, los datos se toman como iso-8859-1, windows-1252, o algo similar, explicando el â, ¬, о, Ã cosas). –

2

Insert <meta charset="utf-8"> en head.
O establecer la cabecera Content-Type: text/html;charset=utf-8 en el lado del servidor
También puede añadir en qué .htaccess: AddDefaultCharset UTF-8 información más aquí http://www.askapache.com/htaccess/setting-charset-in-htaccess.html

+0

Tenga en cuenta que '' es solo para HTML5. Para HTML4 y versiones anteriores, use '' en su lugar. –

Cuestiones relacionadas