2012-03-01 25 views
9

Ho un codice HTML che contiene alcuni caratteri iniziali (€, ó, á). Il documento HTML viene salvato come UTF-8 senza BOM. Quando visualizzo la pagina nel browser, i caratteri iniziali sembrano essere sostituiti con combinazioni di caratteri sconosciuti (â,¬, ³, Ã). È solo quando salvo il mio documento HTML come UTF-8 con BOM che i caratteri vengono visualizzati correttamente.L'html UTF-8 senza BOM visualizza caratteri strani

Preferirei non dover includere una distinta base nei miei file, ma nessuno ha idea del perché potrebbe farlo? e un modo per risolverlo? (oltre a includere una DB)

+1

Ha il codice HTML si identifica come UTF-8-encoded? –

+0

Hai specificato il set di caratteri in un tag 'meta'? –

+0

Hai fatto le cose appropriate con il tuo server e i meta tag per informare il browser che il contenuto è, in realtà, UTF-8? –

risposta

14

Probabilmente non stai specificando il set di caratteri corretto nel file HTML. Il BOM (grazie @Jukka) invia il browser in modalità UTF-.8; in sua assenza, è necessario utilizzare altri mezzi per dichiarare il documento UTF.8.

Se si ha accesso alla configurazione del server, è necessario assicurarsi che il server non stia inviando informazioni errate sui set di caratteri. Vedi per es. How to change the default encoding to UTF-8 for Apache?

Se si ha accesso soltanto al vostro HTML, l'aggiunta di questo meta tag nella testa del documento dovrebbe fare il trucco:

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

o come @Mathias sottolinea, il nuovo HTML 5

<meta charset="utf-8"> 

(valido solo se si utilizza un doctype HTML 5, rispetto al quale non c'è più alcun argomento valido anche se non si utilizza il markup HTML 5.)

+5

+1. Oggigiorno puoi usare ''. (Se non stai usando l'HTML5 DOCTYPE nel 2012, stai sbagliando.) –

+0

@Mathias buon punto, aggiunto, grazie –

+0

I sintomi suggeriscono che il browser testato effettivamente ascolti il ​​BOM: apparentemente né il server né il il documento stesso dichiara la codifica, costringendo il browser a dedurre o indovinare la codifica; e sembra che in seguito una BOM indichi UTF-8, il che ha perfettamente senso (e in assenza di BOM, i dati sono presi come iso-8859-1, windows-1252, o qualcosa di simile, spiegando il â, ¬, ³, Ã roba). –

2

Inserire <meta charset="utf-8"> in head.
O impostare l'intestazione Content-Type: text/html;charset=utf-8 sul lato server
È anche possibile fare aggiungere .htaccess: AddDefaultCharset UTF-8 maggiori informazioni qui http://www.askapache.com/htaccess/setting-charset-in-htaccess.html

+0

Nota che '' è solo per HTML5. Per HTML4 e versioni precedenti, utilizzare ''. –

Problemi correlati