PHP kullanarak HTTP başlığını UTF-8 olarak ayarlama

Aşağıdaki kodla HTML sayfalarına çeşitli şeyler yineleyen birkaç PHP sayfam var.

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

Ancak, W3C validator kullanarak doğrulama yaptığımda şu sonuç çıkıyor:

HTTP başlığında belirtilen karakter kodlaması (iso-8859-1) <meta> öğesindeki değerden (utf-8) farklı.

PHP'de oldukça yeniyim ve PHP dosyalarının başlığını HTML dosyalarıyla eşleşecek şekilde değiştirip değiştiremeyeceğimi merak ediyordum.

Çözüm

HTTP başlığını değiştirmek için header kullanın:

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

İstemciye herhangi bir çıktı gönderilmeden önce bu işlevi çağırmayı unutmayın. Aksi takdirde başlık da gönderilmiş olur ve artık onu değiştiremezsiniz. Bunu headers_sent ile kontrol edebilirsiniz. Daha fazla bilgi için header` kılavuz sayfasına bakın.

Yorumlar (6)

Öncelikle PHP dosyalarının UTF-8 kodlu olduğundan emin olun.

Meta etiketi bazı tarayıcılar tarafından yok sayılır. Eğer sadece ASCII karakterleri kullanıyorsanız, bunun bir önemi yoktur.

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

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

Bu, web sunucunuzun tanımladığınızla eşleşmeyen bir HTTP başlığı göndermesiyle ilgili bir sorundur. Sunucunun doğru başlıkları göndermesini nasıl sağlayacağınızla ilgili talimatlar için bu sayfaya bakın.

Aksi takdirde, başlıkları değiştirmek için PHP'yi de kullanabilirsiniz, ancak bunun bu kodu kullanarak herhangi bir metnin çıktısını almadan önce yapılması gerekir:

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

PHP kullanarak başlıkların nasıl gönderileceği hakkında daha fazla bilgi başlık işlevinin belgelerinde bulunabilir.

Yorumlar (0)