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.

Php Türkçe Karakter Sorunu Çözümü

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.

<html lang="tr">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">

Sorun yaşamamak için sayfamızın <head> tagları arasında utf-8 karakter setini kullanıyoruz. Eğer Html5’den daha düşük bir sürümde çalışacaksanız o zaman sayfa içinizde şunu kullanmalısınız.

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

Sayfa içinde 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.

<?php
//Database Bağlantısı.
error_reporting(0);
$host = "localhost";
$dbname = "dbadi";
$username = "root";
$password = "123456";
$db = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", "$username", "$password");
//Database Bağlantısı Tamamlandı.

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.

Admin
Admin

Bilgiye ve eğitime önem veren, paylaşmayı seven bir insan.

14 Yorumlar
Tümünü göster En Yararlı En Yüksek Puan En Düşük Puan Yorumunuzu ekleyin
  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. Cevapla
    Mehmet Değirmenci Ocak 10, 2017 Saat 7:41 am

    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.

  7. Php ile kodlama yaparken birden bire sayfamda anlamsız ifadeler ile karşılaştım. Php Türkçe karakter sorunu aramasından geldim bu yazıya, gerçektende bu makalede anlatılan teknikler ile problemi çözüm, emeği geçen herkeze teşekkür ederim.

  8. İşime yarayan bir döküman olduğunu söyleyebilirim. Özellikle veri tabanı kullanımında yaptığım hatalardan ötürü, karakter sorunu yaşadım. Ama bu makale sayesinde, Php karakter sorunlarından kurtulmuş bulunuyorum. Sizi takip etmeye devam edeceğim.

  9. Php türkçe karakter sorunu problemimi sonunda çözebildim. Sorun Mysql’de karakter tanımlamalarında yanlışlıklar varmış. Veri tabanıma ve tablolarıma sırasıyla girip, yapı kısmından karşılaştırma bölümüne gelip karakter setlerini utf8_turkish_ci olarak kaydettim eski verileri temizleyip tekrar denediğimde sorunun gittiğini gözlemledim.

  10. Çok teşekkür ederim, sql veritabanı kısmını boş geçmişim düzeldi…

  11. Php Türkçe karakter sorunu çözümü için internette bulduğum en faydalı makale olmuş. Php Türkçe karakter hatası ile karşılaşıyordum araştırmalarım sonucunda buldum, veri tabanı karakter setini yanlış tanımladığımdan ötürü karakter problemleri yaşıyormuşum. Son düzenlemeler ile artık sorunsuz bir biçimde kullanım sağlıyorum.

  12. Bazen gıcık oluyorum bu kod hatasına. Ama detaylı anlatmışsınız ve görsel eklemenizde desteklemiş konuyu. Çok teşekkür ederim.

  13. Merhaba benim sorunum bu ayarlamaları yaptıktan sonra İngilizce metinleri database kaydetmekte ve kayıttan çekmede sıkıntı yasıyorum. Turkçe metinler de hersey normal ancak forma ingilizce girince sıkıntı oluyor

  14. çok teşekkür ederim işimi halletmeme yardımcı oldu.

Yorum Bırakın

Translate »
Kılavuz Yazılım
Logo