Bu makalede sizlere PHP veya PDO ile Türkçe karakter sorunlarından bahsedeceğim.
Gelende bu duruma bir hataymış gibi bakılıyor ancak bu durum bir hata değil. Yazdığımız kodlarda bazı kısımlar eksik kalıyor. Yani php sunucuya tam bilgi vermediğimiz için o da gidip varsayılan ayarları ile çalıştırıyor web sitemizi.
Veritabanınızın karakter seti “utf8_turkish_ci” olmalı.
Web sayfası tarafında meta etikleri arasında şunları eklemeniz gerekiyor ;
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Language" content="TR"/>
Web sayfamızın karakter setini “UTF-8” olarak ayarladık ve içerik dilimizin “TR” olduğunu belirttik.
Eğer PDO ile veritabanından veri çekmiyorsanız yani sabit içerikli bir site ise yapılacak işlem bu kadar.
PDO ile veritabanından veri çekerken ve veritabanından gelen verilerde Türkçe karakter sorunu yaşıyorsanız onun da çözümü çok basit. Yazmış olduğum ” PHP DATA OBJECT (PDO) KULLANIMI” başlıklı makalede sizlerle paylaşmış olduğum veritabanı yardımcısı ile Türkçe karakter sorunu yaşamayacaksınız.
function __construct() { $this->dsn = 'mysql:host=127.0.0.1;dbname=serdarkaraca;charset=utf8'; $this->user = 'serdarkaraca'; $this->password = 'serdarkaraca'; } /* Bu fonksiyonda 'dsn' değişkeninin sonunda 'charset=utf8' olarak yazdık. Yani DB'den gelen tüm verileri için karakter seti UTF-8 dedik. */ private function OpenConnection() { try { $this->db = new PDO($this->dsn, $this->user, $this->password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); //$this->db->exec("SET NAMES 'utf8'; SET CHARSET 'utf8'"); } catch (PDOException $e) { echo 'Veritabanı bağlantısı başarısız oldu: ' . $e->getMessage(); } }