HTTP antraštės UTF-8 nustatymas naudojant PHP

Turiu keletą PHP puslapių, kuriuose į HTML puslapius su toliau nurodytu kodu įrašomi įvairūs dalykai.

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

Tačiau, kai patvirtinu naudodamas W3C validatorių, gaunamas toks rezultatas:

HTTP antraštėje nurodyta simbolių koduotė (iso-8859-1) skiriasi nuo <meta> elemento reikšmės (utf-8).

Esu visai naujas PHP specialistas ir norėjau sužinoti, ar galėčiau ir turėčiau pakeisti PHP failų antraštę, kad ji atitiktų HTML failų antraštę.

Sprendimas

Norėdami pakeisti HTTP antraštę, naudokite header:

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

Atkreipkite dėmesį, kad ši funkcija būtų iškviesta prieš išsiunčiant bet kokią išvestį klientui. Priešingu atveju antraštė taip pat buvo išsiųsta ir, aišku, jos nebegalėsite pakeisti. Tai galite patikrinti naudodami `headers_sent. Daugiau informacijos rasite header vadovo puslapyje.

Komentarai (6)

Pirmiausia įsitikinkite, kad patys PHP failai yra UTF-8 koduoti.

Kai kurios naršyklės ignoruoja metažymą. Jei naudojate tik ASCII simbolius, tai vis tiek nesvarbu.

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

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

Tai yra problema, susijusi su žiniatinklio serveriu, siunčiančiu HTTP antraštę, kuri neatitinka jūsų nustatytos antraštės. Instrukcijų, kaip priversti serverį siųsti teisingas antraštes, rasite šiame puslapyje.

Kitais atvejais antraštėms pakeisti taip pat galite naudoti PHP, tačiau tai reikia padaryti _prieš išvedant bet kokį tekstą naudojant šį kodą:

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

Daugiau informacijos apie tai, kaip išsiųsti antraštes naudojant PHP, rasite antraštės funkcijos dokumentacijoje.

Komentarai (0)