Anasayfa / Php / Php Türkçe Karakter Hatası ve Çözümü

Php Türkçe Karakter Hatası ve Çözümü

Türkçe karakterler özellikle webmaster’lar için bazen can sıkıcı olabilir. Türkçe karakterler derken, aksam harflerden bahsediyorum yani Türkçe’de kullanılan ama ingilizcede kullanılmayan karakter’ler web sayfalarımızda karakter sorunlarına neden olabiliyor. Bu yazımızda Php’de Türkçe karakter hatası ve çözümünden bahsedeceğiz. Bunun için ne gibi önlemler alabilir ve çözüm yollarını uygulamalı olarak anlatacağız.

Türkçe karakter sorunu veren harfler hangileri? : Türkçe’de kullanılan ama ingilizcede kullanılmayan harfler şunlardır.

Aksam Harfler: ç,ş,ğ,ı,ü,ö

Bu harfler sayfa içi ve veritabanında doğru ayarlamalar yapılmadan kullanıldığında sizlere sorun yaşatabilmektedir. Karakter sorunu bir web sayfası için neden olur? yani bu sorunu ney tetikliyor da, ekranda anlamsız şeyler çıkıyor?

Bunun mantığını size anlatalım, Html’de bir sayfa oluşturduğunuzda ve bu sayfanıza HTML kodlarınızı yazmaya başladığınızda sayfanın default yani (varsayılan) karakter seti “Latin1” dir. Siz Türkçe desteği olmayan bir karakter seti seçtiğinizde hata alacaksınız. Veya herhangi bir karakter seti seçmediğiniz durumlarda ise default’ta yani varsayılan set olan “Latin1” algılanacaktır.

Latin1 karakter setinin Türkçe karakter desteği olmadığı için sorun yaşayacaksınız. Bu Mysql veritabanı kullanıyorsanız onun içinde geçerli bir durumdur. Önce sayfa içimizde nasıl bir yapı oluşturacağız hemen anlatalım. Html5 kullanacaksanız aşağıdaki kodlar işinizi kolaylıkla çözecektir.

Sayfamızın içinde Utf-8 karakter setini kullanıyoruz, bu karakter setinin Türkçe desteği olduğu için sorunsuz bir kullanım olacaktır. Peki Html5’den daha düşük bir sürümde çalışacaksanız o zaman sayfa içinizde şunu kullanmalısınız.

Sayfa içimizde bu düzenlemeleri yaptıktan sonra bir sonraki işlemimiz veri tabanı kısmı olacaktır. Veriler veritabanımıza kayıt edilirken karakterleri düzgün yazdırmak için ise öncelikli olarak veritabanımızı utf8_turkish_ci olarak seçiyoruz. Eğer bu seçimi boş geçersek default karakter seti olan Latin1 otomatik olarak çalışacaktır. Buda sorun yaşatacaktır. Yani karakter seti sorunlarının en başında gelen ve yapılan en büyük hataların başında veri tabanı karakter seti kısmının boş geçilmesi gelmektedir.

Geldik son kısma. Burası çok önemli olduğu için özellikle bu kısma dikkat edilim. Şimdi veri tabanı bağlantı dosyamızda Utf-8 setinin seçilmesi ve bağlantının bu şekilde yapılması gerekmektedir. Ben sizin için PDO ‘da benim içerik yönetim sistemim için kullandığım bağlantı dosyamı göstereyim.

Burada görüyorsunuz bağlantı yaparken Utf-8 karakter setini seçiyorum ve bu şekilde bağlanıyorum. Evet arkadaşlar bu dediklerimi uygularsanız veya web sayfanız için sorun yaşadığınızda, bu sorunları bu anlattığım bilgilerden yola çıkarak çözebilirsiniz.

Son olarak size şöyle bir güzellik yapalım 🙂 ve Türkçe karakterleri php ile nasıl temiz bir hale getirebilirsiniz onunla ilgili bir kod bloğu yazalım.

Bakınız Mysql’den çektiğiniz verilerde karakter hatası varsa bu kod ile ekrana temiz olarak çekebilmeniz mümkün. Misal veri tabanınızdan gelen veri “$yaziniz” olsun. Yukarda $yaziniz değişkeninden gelen verilerdeki anlamsız ifadeleri Türkçe karakterlere çeviriyor ve “$tr” değişkenine atıyor. Siz bunu gerektiği gibi kullanabiliyorsunuz.

Hatta bunu fonksiyona çevirerek okuma ve yazma işlemlerinizde kullanabilirsiniz. Anlamadığınız yerler olursa yorum yazarak bizlerden yardım alabilirsiniz.

Bir önceki yazımız olan Php Sef Url Yapımı Uygulamalı başlıklı makalemizi de okumanızı öneririz.

Öneriyoruz

Php Html Kodlarını Temizleme

Php’de yazdığınız kodların güvenlik açığı teşkil etmemesi için bazı önemlerin alınması gerekebilir. Gelen veriyi nasıl ...

5 Yorumlar

  1. Teşekkürler çok faydalı bir anlatım olmuş. Php’de Türkçe karakter sorunları çoğu insanın başına geliyor, helede bu işlerle yeni yeni tanışan kişilerin başına daha çok geliyor. Tecrübe kazandıkça sorunlarda çözülüyor.

  2. Bu yazmış olduğunuz yazı ile tüm herkesi bilgilendirdiğiniz için teşekkürler özenli bir anlatım yapılmış. Bu sorunlar bir çok kişinin karşılaşabileceği türden sorunlardır. Bende uzun zaman önce php türkçe karakter hatası ile karşılaşmıştım ve çok uğraşmıştım yinede bilmeyenler için veya yeni başlayan acemi webmasterler için güzel bir yazı olmuş, teşekkürler.

  3. Diğer yorumlardaki gibi özellikle yeni başlıyanlar için çok açıklayıcı bir yazı olmuş.Emeğine sağlık

  4. Güzel düşünülerek yazılmış bir paylaşım teşekkürler. Karakter sorunu sürekli karşılaşılan hataların başında geliyor. Ayrıca son yazdığınız str_replace fonsiyonuda tamamlamış…

  5. Mehmet Değirmenci

    Php karakter sorunu çözümünü bu yöntemle hallettim. Benim veri tabanında kullandığım karakter setini seçmediğim için latin1 kullanılmış sistem tarafından. Şu anda utf-8 yapıp, sayfa içimizde tagları arasında utf-8 kullandım ve bunu subline editörle yaptım şu anda sorun yok. Sorun yaşayanların sorunlarını çözmeleri için ideal bir makale durumunda.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir