PHP Türkçe Karakter Sorunu
Bu makalemde PHP'de sıkça karşılaşılan Türkçe karakter sorunlarının çözüm yollarından bahsedeceğim. Bu sorunun en büyük kaynağı, HTML, PHP ve MySQL 'de kullanılan farklı veya Türkçe karakterleri desteklemeyen karakter kodlamalarının kullanılmasıdır. Bu teknolojilerde bulunan ve Türkçe karakterlerini destekleyen UTF-8 karakter kodlamasının kullanımı bütün sorunlarınızı çözecektir.
Bunların yanında kod yazmada kullandığınız editörün kullandığı karakter kodlaması da UTF-8 olmalıdır. Yani bütün ayarlamalarımızı UTF-8 olarak yapmamız gerekiyor.
HTML'de Karakter Kodlaması
Aşağıdaki komutun HTML yapınızdaki "<head> </head>" düğümleri arasında olduğundan emin olun.
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
PHP'de Karakter Kodlaması
PHP ile oluşturduğumuz sayfaların karakter kodlamasını UTF-8 yapalım. Her PHP sayfasının başlangıç kısmına aşağıdaki komutu ekleyin.
header('Content-Type: text/html; charset=utf-8');
Ayrıca veri tabanı bağlantısında, alınan bilgilerin UTF-8 karakter kodlamasına sahip olduğunu PHP'ye belirtmemiz gerekiyor. Bunu, kullandığımız PHP sürümüne göre "charset" veya "set names" komutlarını veri tabanı bağlantısı için kullandığımız PHP komutlarına ekleyerek yapabiliriz.
PHP 5.3.6 ve sonraki sürümler için örnek veritabanı bağlantısı.
$kullanici_adi = '';
$sifre = '';
try {
$db = new PDO('mysql:host=localhost;dbname=veritabani_adi;charset=utf8',$kullanici_adi,$sifre);
} catch (PDOException $e) {
print "Hata!: " . $e->getMessage();
die();
}
PHP 5.3.6'den önceki sürümler için
$kullanici_adi = '';
$sifre = '';
try {
$db = new PDO('mysql:host=localhost;dbname=veritabani_adi',$kullanici_adi,$sifre);
$db->exec("set names utf8");
} catch (PDOException $e) {
print "Hata!: " . $e->getMessage();
die();
}
MySQL'de Karakter Kodlaması
Öncelikle eğer bilgilerinizin olduğu bir veri tabanınız varsa mutlaka yedeğini alın. İlk kontrol etmemiz gereken yer, PHPMyAdmin anasayfasındaki Sunucu bağlantı karşılaştırması (Server connection collation) kısmıdır. Bu alanın karakter kodlaması "utf8_general_ci" olmalı.
Daha sonra PHPMyAdmin sayfasında, veritabanınızı oluşturan tablolarınızı seçerek, tablolarda yer alan alanların karakter kodlamalarını kontrol edin. Bu alanların dil kodlamalarının "utf8_general_ci" olmasını sağlayın.
Kod Editör Ayarları
Yukarıdaki yazılanları deneyip de hala Türkçe karakter gösteriminde problem yaşıyorsanız, kodlamayı yaptığınız editörde de bazı ayarlamalar yapmanız gerekmekte. Veritabanı bağlantısı yaptığınız PHP dosyalarınızın kullandığınız editör tarafından UTF-8 BOM'suz olarak (Byte Order Mark) kaydedildiğinden emin olun. Eğer "Sublime" editörü kullanıyorsanız özel bir ayar yapmanıza gerek yok, varsayılan karakter kodlamaları zaten BOM'suz şekilde yapılır (BOM seçilmedikçe). Emin olmak için PHP veri tabanı bağlantısı dosyalarınızı sublime'da açın ve menüden "File - Save width Encoding - UTF8" seçeneği ile tekrar kaydedin. Notepad++ kullanıyorsanız "Encoding - Karakter Kodlama" seçeneğinde UTF8 seçip dosylarınızı kaydedin. (Notepad++ 6.9.2 ve daha eski versiyonlarda "UTF8 without BOM" seçeneği seçilmeli)
Sublime Karakter Kodlaması
Notepad++ Karakter Kodlaması
Bu aşamalarla Türkçe karakter sorununuz çözülmeli. Zaman zaman yazıları bölme işlemlerinde de Türkçe karakter sorunuyla karşılaşabilirsiniz. Bu işlem için genellikle kullanılan PHP komutu "substr" komutudur. Fakat bu komut karakter sayısına göre değil, byte sistemine göre çalışır. O yüzden bu komutu kullanarak metin bölme işlemleri yaparsak ve ayrılan yazıdaki son karakter Türkçe karakter ise bu karakterler soru işareti şeklinde gösterilir. O yüzden Türkçe karakterler içeren metinleri bölme işleminde substr komutu yerine mb_substr komutunu kullanmak gerekiyor. Ayrıca mb_substr komutunda karakter kodlamasını da belirtebiliyoruz.
Örnek mb_substr Kullanımı
$ayrilan_yazi = mb_substr($yazi, 0, 300, 'utf-8');
Yukarıdaki komut, $yazi değişkenindeki metinin ilk 300 karakterini UTF-8 formatında alır ve $ayrilan_yazi değişkenine atar. Böylece bölme işlemi karakter sayısına göre yapıldığından herhangi bir sorun oluşmaz.
Diğer Ayarlar
Hala Türkçe karakter sorunu yaşıyorsanız, son olarak sunucunuzdaki PHP ayarlarınızı kontrol etmeniz gerekir. Bunu yapmanın en kolay yolu "phpinfo()" komutunu kullanmaktır. Bunun için bir php dosyası oluşturup, dosyaya
<?php phpinfo(); ?>
komutunu yazmanız gerekiyor. Oluşturduğunuz dosyayı sunucuza atıp, bir tarayıcı yardımıyla açmanız gerekiyor. Gelen ekranda PHP ile ilgili bütün bilgileri görebilirsiniz. Burada bakmanız gereken "default_charset" seçeneğidir. Bu seçeneğin UTF-8 olması gerekiyor.
Eğer varsayılan karakter kodlamasında UTF-8 yerine başka bir karakter kodlaması varsa bunun değiştirilmesi gerekir. Bunu yapmak için "php.ini" dosyasına erişim izniniz olması gerekir. Eğer websiteniz paylaşımlı (shared) bir hostta yer alıyorsa, büyük ihtimal ile erişim izniniz olmaz. Erişim izniniz olsa da olmasa da en kolay yol hosting firmanız ile iletişime geçip karakter kodlamasını UTF-8 olarak değiştirtmeniz olacaktır. Aksi takdirde (erişim izniniz varsa) SSH ile sunucunuza bağlanmanız, bir editör ile php.ini dosyasına ulaşmanız ve "default_charset" seçeneğini değiştirmeniz gerekir.
Güvenlik Uyarısı "phpinfo()" komutu websiteniz için bütün kritik ayarları göstermektedir. Bu ayarların başkaları tarafından görülmesi, websitenizin güvenliği açısından oldukça sakıncalıdır. PHP ilgili gerekli bilgileri öğrendikten sonra sunucunuzdan "phpinfo()" komutunun olduğu dosyanızı siliniz.
- Yayın Süresi : 2636 Gün
- Konu Sayısı : 277 Bilim Konuları : 118 Teknoloji Konuları : 42 Web-Tasarım Konuları : 42 İlginçler Konuları : 63 Gezi Konuları : 12 En Popüler : Sonsuz İşlemleri 246119 Kere En Çok Yorum Alan : Logaritma Nedir, Ne İşe Yarar, Gerçek Hayatta Nerelerde Kullanılır? 19 Kere En Çok Değerlendirilen : Napier'in Kemikleri (Matematik) 151 Kere
Satrançta Piyonun Geçerken Alması Kuralı (En Passant)
En passant kuralı nedir, ne zaman uygulanır...
Işık Hızında Bağıl Hız
Işık hızında giden cisimler için bağıl hız hesaplamaları...
Newton Karantinada Neler Yaptı?
Newtonun karantina günleri ve icatları...
Çamaşır Suyu Nedir? Nasıl Temizler?
Çamaşır suyunun yapısı, kullanım alanları ve dikkat edilmesi gerekenler...
Dünyanın Yaşını Nasıl Biliyoruz?
Dünyanın yaşını hesaplama yöntemleri...
Salgın Hastalık Dereceleri : Pandemik, Epidemik, Endemik, Sporadik
Pandemik, Epidemik, Endemik, Sporadik Nedir?
Kahve Günlükleri : Kahve Çekirdeği Kavurma Dereceleri
Hafif, orta, orta-koyu, koyu kavrulmuş kahve çekirdeklerinin özellikleri ve farkları...
Kahve Günlükleri : Kahve Demleme Yöntemleri
Kahve demleme yöntemleri ve farkları...
Kahve Günlükleri : Kahve Çeşitleri ve Ölçüleri
Popüler kahve çeşitleri ve ölçüleri...
Kahve Günlükleri : Arabica ve Robusta
Arabica ve Robusta kahve çekirdekleri ve farkları...
Sayıların Sınıflandırılması (Matematik)
Matematikte sayıların sınıflandırılması : Kompleks, Sanal, Gerçek, Doğal, Rasyonel, İrrasyonel...
Websiteniz İçin Bedava Güvenlik Sertifikası (SSL Sertifikası)
Tamamen bedava güvenlik sertifikası nasıl elde edilir, nasıl yüklenir?
Wi-Fi Şifresini Görme (Windows 7 - 10)
Programsız, kodsuz wifi şifresini görme yöntemi.
Kolay Ezberleme Yöntemi : Anımsatıcılar
Kolay ezberleme yöntemlerinden anımsatıcılar : Mnemotekni
Tarayıcılarda Ön Bellek İşlemleri (Normal Yükleme - Tam Yükleme - Ön Belleği Boşaltma)
Tarayıcılarda normal yükleme ve tam yükleme ne demektir, nasıl yapılır?
Takip, Reaksiyon, Fren ve Durma Mesafesi
Reaksiyon, fren, durma ve takip mesafesi nasıl hesaplanır, bilimsel detaylar.
Bilgisayarda Müzik Nasıl Yapılır?
Sadece bilgisayar programları kullanarak gerçekçi müzik nasıl oluşturulur?
Beden Kitle İndeksi Hesaplama ve Değerlendirme
Bu uygulama ile Vücut Kitle İndeksinizi hesaplayabilir ve sonucu değerlendirebilirsiniz.
Hidrojen Peroksit (H2O2) ve Özellikleri
Hidrojen peroksit nedir, sağlık açısından ne gibi etkileri vardır?
Photoshop'ta Ortalama İşlemleri
Photoshop'ta ortalama işlemleri nasıl yapılır?
Bu kısımdan sitemizdeki gelişmelerden haberdar olabilirsiniz.
- Abonelik Sistemi kaldırıldı. 11.03.2020
- Arama Motoru Google Özel Arama olarak değiştirildi. 15.10.2019
- Yıllık sunucu bakımı tamamlandı. 04.10.2019
- Konulara kaynaklar eklendi. 10.07.2019
- SSL sertifikası eklendi. 31.05.2019
Gitar çalmayı öğrenmek, yeteneğinizi geliştirmek, popüler tab ve akorlar için gitaregitim.net sitesini ziyaret etmeyi unutmayın.