Translate Blog

3 Kasım 2012 Cumartesi

Php Türkçe Karakter, Session veya Header Hataları Çözümü

Birçok kişi web sitesi yaparken karakterlerinde sorun yaşıyor, ben de senelerdir bu işin içindeyim bir türlü ders alıp da sağlam bir yol tutturamamışım demek ki ki  bu yazıyı yazmak zorunda kaldım.

Konumuz web sayfalarında ekrana gelen session_start veya Header Already Send gibi hataların nedenleri. Öncelikle şu bilgiyi vereyim Header ile yönlendirme yapıyorsanız sayfanızda header dan önce herhangi bir yazı olmamalı. Herşeyi düzgün yaptınız ama anlamadığınız bir şekilde hala bir hata var.

Evet anlaşılmaz bir şekilde sayfanızın alakasız satırlarında hata veriyor değil mi?
Bunun nedeni sayfanızın karakter kodlamasındaki hata. UTF8 kullanılır genelde, veritabanınız da utf 8dir. mysql bağlantınızıda utf8 yapmışınızdır. Hatanın nedeni ise BOM denilen bir karakter yapısından kaynaklanıyor. Dreamweaver kullananlar için resimde gördüğünüz kutucuğu seçmiş olabilirsiniz, onu kaldırın. Böylelikle sizin gözle göremediğiniz ama kodlarınızın arasına, mesela <?php kodunun arasına yerleşen boşluk karakterini ortadan kaldırmış olacaksınız.

Bomu neden seçmiş olabilirsiniz, Türkçe karakterde sorun yaşıyorsunuz diye değiştirmiş olabilirsiniz. Yapmayın. Bazen Türkçe karakter sorunun çözmek kodlarınızı kopyalayıp yeni boş bir belgeye kaydederek çözülebilir.

Sayfanızda ez_sql kullanıyor olabilirsiniz. Türkçe karakter sorunu yaşamanız çok yüksek, mysql bağlantısı yaptığınız belgede bağlantı kodunuzun altına $db->query("SET NAMES 'utf8'"); ekleyin. Belgelerinizi ve veritabanınızın dilini her zaman UTF8 olarak kullanın. Bir sorun yaşamazsınız. Yaşarsanız belgenizin içini kopyalayın yeni belge açıp yapıştırıp UTF8 olarak kaydedin ;)

Tecrübe ile sabittir. Bom konusunda engin bilgisini paylaşan Adil YILDIZ dostuma teşekkürler. Bom hakkında daha detaylı bilgiyi buradan alabilirsiniz.




Yorum Gönder