PHP ve Mysql Türkçe Karakter Sorunu
Gelelim bu yöntemlere:
YÖNTEM 1 (LATİN5):
1- Mysql tablonuzun özelliklerinden karakter setini latin 5, karşılaştırmayı da latin5_turkish_ci olarak seçin. Sadece tabloyu ayarlamak yeterlidir. Ayrıca veritabanının yada tablo bileşenlerinin özelliklerini değiştirmeye gerek yoktur. Zaten bileşenler tablo değişince otomatik olarak latin5 olacaktır.
2-Php de sayfaların head kısımları arasına şu meta etiketini ekleyin:
meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-9">
3- Tablomuzu ve Sayfalarımızı latin5 olarak ayarladıktan sonra bir işlem kaldı. O da veritabanından veri çekerken de latin5 olarak çekmek. Bunun için şu kodu veri tabanı bağlantısından hemen sonraya ekleyin, yani şu şekilde:
?php
$baglan = mysql_connect('localhost','user','pass',TRUE);
mysql_selectdb('db',$baglan
);
mysql_set_charset('latin5',$baglan
);
?>
YÖNTEM 2 (UTF-8):
1- Mysql tablonuzun özelliklerinden karakter setini utf8, karşılaştırmayı da utf8_general_ci olarak seçin. Sadece tabloyu ayarlamak yeterlidir. Ayrıca veritabanının yada tablo bileşenlerinin özelliklerini değiştirmeye gerek yoktur. Zaten bileşenler tablo değişince otomatik olarak utf8 olacaktır.
2-Php de sayfaların head kısımları arasına şu meta etiketini ekleyin:
meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3-Editörünüzde php dosyanızı kaydederken Kodlama kısmını utf-8 olarak seçin.
3- Tablomuzu ve Sayfalarımızı utf8 olarak ayarladıktan sonra bir işlem kaldı. O da veritabanından veri çekerken de utf8 olarak çekmek. Bunun için şu kodu veri tabanı bağlantısından hemen sonraya ekleyin, yani şu şekilde:
?php
$baglan = mysql_connect('localhost','user','pass',TRUE);
mysql_selectdb('db',$baglan
);
mysql_set_charset('utf8',$baglan
);
?>
TÜRKÇE KARAKTERLERİN HTML ve ASCII KARŞILIKLARI
HTML KARŞILIKLARI:
Ü <=> Ãœ
Ş <=> ÅŸ
Ğ <=> ÄŸ
Ç <=> Ç
İ <=> Ä°
Ö <=> Ö
ü <=> ü
ş <=> ÅŸ
ğ <=> ÄŸ
ç <=> ç
ı <=> ı
ö <=> ö
ASCII KARŞILIKLARI:
ç <=> & #231;
ı <=> & #305;
ğ <=> & #287;
ö <=> & #246;
ş <=> & #351;
ü <=> & #252;
Ç <=> & #199;
İ <=> & #304;
Ğ <=> & #208;
Ö <=> & #214;
Ş <=> & #350;
Ü <=> & #220;
ascii karakter tablosunun hepsi için tıklayın
Diyelimki herşeyi yaptınız ama yine de sayfalarınızda veritabanından çektiğiniz bilgiler bozuk çıkıyor. O zaman yukarıda verdiğim kodlar aracılığıyla PHP sayfalarınızda bazı replace fonksiyonlarını kullanarak bozuk çıkan karakterleri ekrana vermeden önce düzeltebilirsiniz. Kendi kullandığım örnek bi fonksiyon şöyle:
function karakter_tr($text)
{
$text = trim($text);
$search = array('Ð','Þ','Ý','Ä°');
$replace = array('Ğ','Ş','İ','İ');
$new_text = str_replace($search,$replace,$text);
return $new_text;
}