Nastavitev glave HTTP na UTF-8 z uporabo PHP

Imam več strani PHP, ki odmevajo različne stvari v strani HTML z naslednjo kodo.

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

Ko pa jo potrdim z validatorjem W3C validator, dobim naslednji rezultat:

Kodiranje znakov, navedeno v glavi HTTP (iso-8859-1), se razlikuje od vrednosti v elementu <meta> (utf-8).

Sem precej novinec v PHP in me zanima, ali lahko in moram spremeniti glavo za datoteke PHP, da se bo ujemala z datotekami HTML.

Rešitev

Za spreminjanje glave HTTP uporabite header:

header('Content-Type: text/html; charset=utf-8');

To funkcijo pokličite, preden je bil odjemalcu poslan kakršen koli izpis. V nasprotnem primeru je bila poslana tudi glavička in je seveda ne morete več spreminjati. To lahko preverite s funkcijo headers_sent. Za več informacij glejte priročnik za header.

Komentarji (6)

Najprej se prepričajte, da so datoteke PHP kodirane UTF-8.

Nekateri brskalniki ne upoštevajo meta oznake. Če uporabljate samo znake ASCII, to tako ali tako ni pomembno.

http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

header('Content-Type: text/html; charset=utf-8');
Komentarji (0)

Gre za težavo, ker spletni strežnik pošilja glavo HTTP, ki se ne ujema z glavo, ki ste jo določili. Navodila, kako strežniku omogočiti pošiljanje pravilnih glavic, najdete na tej strani.

Sicer lahko za spreminjanje glave uporabite tudi PHP, vendar je to treba storiti pred izpisom besedila s to kodo:

header('Content-Type: text/html; charset=utf-8');

Več informacij o tem, kako poslati glave s PHP-jem, najdete v dokumentaciji za funkcijo header.

Komentarji (0)