Ho diverse pagine PHP che fanno l'eco di varie cose in pagine HTML con il seguente codice.
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
Tuttavia, quando convalido usando il W3C validator viene fuori il seguente:
La codifica dei caratteri specificata nell'intestazione HTTP (iso-8859-1) è diversa dal valore nell'elemento <meta> (utf-8).
Sono abbastanza nuovo di PHP, e mi stavo chiedendo se potevo e dovevo cambiare l'intestazione dei file PHP in modo che corrispondesse a quella dei file HTML.
Usate header
per modificare l'intestazione HTTP:
header('Content-Type: text/html; charset=utf-8');
Notate di chiamare questa funzione prima che qualsiasi output sia stato inviato al client. Altrimenti anche l'intestazione è stata inviata e ovviamente non puoi più cambiarla. Puoi controllarlo con headers_sent
. Vedi la pagina di manuale di header
per maggiori informazioni.
Per prima cosa assicuratevi che i file PHP stessi siano codificati UTF-8.
Il meta tag è ignorato da alcuni browser. Se usi solo caratteri ASCII, non importa comunque.
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
header('Content-Type: text/html; charset=utf-8');
Questo è un problema del tuo server web che invia un'intestazione HTTP che non corrisponde a quella che hai definito. Per istruzioni su come fare in modo che il server invii le intestazioni corrette, vedi questa pagina.
Altrimenti, puoi anche usare PHP per modificare le intestazioni, ma questo deve essere fatto prima di emettere qualsiasi testo usando questo codice:
header('Content-Type: text/html; charset=utf-8');
Maggiori informazioni su come inviare le intestazioni usando PHP possono essere trovate nella documentazione della funzione header.