Html, Php ve Mysql’ de Türkçe karekter sorunu ve çözümü

By:
Categories: Html, Php, Web Tasarım
12 Yorum

Web tasarıma ilk başladığınızda karşınıza çıkacak belli başlı problemlerden biriside Türkçe karekter hatasıdır. Eğer html veya php sayfalarınızda Türkçe karekter sorunu yaşıyorsanız yada mysql veri tabanınızdan çektiğiniz verilerde Türkçe karekter hatası varsa yazımızın devamını okuyabilirsiniz.Html, php yada mysql deki Türkçe karekter hatasının çözümlerini basitten zora doğru sırayla verelim. En kolay çözüm html ve php’ de olduğu için ilk önce onları yazalım.

Bir html sayfasında <head> …..</head> etiketleri arasına web sayfasının desteklediği dil kodunu girmelisiniz. Aşağıdaki html kodunu başlık etiketleri arasına yazarsanız html sayfanızdaki karekter sorunu çözülmüş olacaktır.

<head>

<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-9″ />

</head>

Yukarıdaki html kodunun bir benzerinide php sayfalar için ekleyebilirsiniz. Yine <head> etiketleri arasına aşağıdaki kodu ekliyoruz, sayfamızdaki Türkçe karekterlerin doğru görüntülenmesini sağlıyoruz.

<head>

header(“Content-Type: text/html; charset=ISO-8859-9”);

</head>

Html ve php sayfalarda yukarıdakileri yaptığınızda sayfanızdaki Tr karekterlerin artık doğru görüntülenmesi gerekiyor. İnternette yayınlamadan localhost’ ta kontral edecek olursanız karekterler yine sorunlu görüntülenebilir. İnternete yüklediğinizde bu sorunda ortadan kalmış olacaktır.

Gelelim php sayfalardaki mysql veritabanından çektiğimiz yada veritabanına eklediğimiz bilgilerdeki karekter hatalarına. Bunlar için veritabanımızın karşılaştırma (Collation) değerini latin_5 olarak kodlayacağız. Veritabanından her bilgi çekişimizde yada her bilgi eklememizde bu karşılaştırma değerini kodlamamız gerektiğinden veritabanı bağlantısı sağladığımız mysql_select_db(…) kodlarının hemen altına aşağıdaki kodu eklerseniz sorun çözülmüş olacaktır. Hatta ben veritabanı bağlantısı için kullanacağız koduda ekleyim, buradan aynen alıp kullanabilirsiniz : )

$dizin=localhost; // (örn : localhost)
$kullanici=root; // (örn : root)
$sifre=sifre; // (örn : sifre)
$vt=veritabani; // (örn : defter)

$baglanti=mysql_connect ($dizin,$kullanici,$sifre) or die (“Hata”);
$veritabani=mysql_select_db($vt) or die (“Hata”);
mysql_query(“SET NAMES ‘latin5′”);
mysql_query(“SET CHARACTER SET latin5”);
mysql_query(“SET COLLATION_CONNECTION = ‘latin5_turkish_ci'”);

Yukarıdaki kod ile veri tabanı bağlantısını yaparsanız artık veritabanından çektiğiniz bilgilerde tr karekter sorunu yaşamazsınız.

Son olarak bir php sayfasında formdan gelen verideki Türkçe karekterleri düzenlemek isterseniz, php nin str_replace fonksiyonunu kullanabilirsiniz. Formdan gelen mesaj ismindeki değişkenin içerisindeki Türkçe karekterleri düzeltelim. Bunun için aşağıdaki kodları kullanmanız yeterli olacaktır.

$mesaj = $_POST[‘mesaj’];

$tr = array(‘Ç’, ‘ç’, ‘Ğ’, ‘ğ’, ‘ı’, ‘İ’, ‘Ö’, ‘ö’, ‘Ş’, ‘ş’, ‘Ü’, ‘ü’);

$kod = array(‘& Ccedil;’, ‘& ccedil;’, ‘& #286;’, ‘& #287;’, ‘& #305;’, ‘& #304;’, ‘& Ouml;’, ‘& ouml;’, ‘& #350;’, ‘& #351;’, ‘& Uuml;’, ‘& uuml;’);

$veri = str_replace($tr, $kod, $mesaj);

Yukarıdaki kodları sırasıyla açıklayacak olursak mesaj isminde formdan gelen veriyi yine mesaj değişkinine atatık. Daha sonra tr isminde bir değişken atadık ve bu dizi değişkeni içerisine hangi Türkçe karekterlerin değiştirilmesini istiyorsak onları yazıyoruz. Kod değişkinine ise tr değişkeninde yazdığımız Türkçe karekterlerin hangi karekterler ile değiştirileceğini giriyoruz. Biz burada karekterleri html’ye karşılık gelen kodlarını değişkene atadık. Son olarakta str_replace fonksiyonu ile mesaj değişkeni içerisindeki Türkçe karekterleri kod değişkenindeki karşılıkları ile değiştirdik ve veri değişkenine atadık.

Sanırım Türkçe karekter hatası ile ilgili yaşayabileceğiniz problemlerin hepsininde çözümü yukarıda var. İstediğinizi kullanabilirsiniz.

12 Yorum

Your Thoughts