Kılavuz Yazılım / 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.

Hala Düzelmedi mi? (Utf-8 Bom Problemi)

Bu işlemlerin hepsini eksiksiz yapmanıza rağmen hala Türkçe karakter sorunu yaşıyorsanız o zaman problem utf-8 BOM (Byte Order Mark)’dan kaynaklanıyor olabilir.

UTF-8 BOM (Byte Order Mark) sitenizin karakter’lerinin bozulmasına neden olabiliyor. Bom, dosyanızın utf-8 olduğunu gösteren bir işarettir. Bunun çözümü için kodlama yaptığınız editörden Bom’u dahil etmeden dosyamızı tekrar kaydetmemiz sorunu çözecektir.

Bunu uygulamalı olarak gösterelim. Ben Sublime Editör kullanıyorum bu nedenle Sublime üzerinden sizlere göstereceğim. Öncelikle Türkçe karakter sorunu yaşadığınız dosyayı sublime ile açıyoruz.

Türkçe karakter sorunu bom utf-8 çözüm

Dosyayı açtıktan sonra şu yolu izliyoruz.

File -> Save With Encoding -> Utf-8 With Bomb

Seçimini yapıp dosyanızı bu şekilde farklı kaydederseniz ve çalıştırırsanız sorunun muhtemelen çözüldüğünü gözlemleyeceksiniz. Anlamadığınız yerler olursa yada problem devam ederse yorum yapın çözelim.

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

Rating: 4.2/5. From 5 votes.
Please wait...

Öneriyoruz

Php Sayfada Çıkan Hataları Kapatma yada Gizleme

Php’de kodlama yaparken yanlış kullanımdan yada başka sebeplerden ötürü sayfanızın bazı yerlerinde hatalar ile karşılaşıyorsanız ...

6 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. Halil İbrahim

    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.

  6. Bunları yapmanıza rağmen problem çözülmüyorsa, o zaman BOM ayarı yapmanız gerekebilir. Kullandığınız editör ile sublime, notepad ++ vs. sorunlu sayfayı açın daha sonra şu adımları izleyin.

    File -> Save With Encoding ->UTF-8 without BOM

    Seçeneği ile dosyayı kaydedeceğiniz yeri seçin ve kaydedin. Bu şekilde deneyin, sorunun çözülme olasılığı çok yüksek. Ama yukarıda anlatılanları yaptıktan sonra bu işlemi yapınız.

Bir cevap yazın

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