Php’de UTF-8 Türkçe karakter sorunu ve çözümü
Php’de utf-8 ile kod yazarken türkçe karakter sorunu ile karşılaşırsanız, aşağıdaki adımları uygulayarak sorunloarı çözebilirsiniz.
1-Veritabanında
Veritabanınızı UTF-8 yaparsanız, Veritabanından veri çekerken veya ekleme işlemi yaparken türkçe karkater problemi yaşarsınız. Bunun çözümü için aşağıdaki kod parçasını veritabanına bağlantı yaptığınız yerin hemen altına yazmaktır.
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION = 'utf8_turkish_ci'");
Eğer siz Php’nin PDO kütüphanesini kullanıyorsanız türkçe karakter sorununu çözmek için aşağıdaki kodu kullanabilirsiniz.
$DBH = new PDO("mysql:host=localhost;dbname=dbname", 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
2- Kelimelerin ilk harflerini büyük yapmaya çalıştığınızda:
Mesela “enes pekkaya” sözcüğünün ilk baş harflerini strtoupper ile büyültmeyew çalıştığınızda türkçe karakter sorunu ile karşılaşırsınız. Çözümü ise;
mb_convert_case($deger, MB_CASE_TITLE, "UTF-8");
Yukarıdaki örnekte “MB_CASE_TITLE” kısmı kelimelerin ilk harflerini büyük yapar. Eğer siz hepsini küçültmek isterseniz “MB_CASE_LOWER”, büyültmek için “MB_CASE_UPPER” kelimesini kullanabilirsiniz. Böylelikle türkçe karakter sorunundan kurtulursunuz.
Eğer sizin karakter unicodunuz “ISO-8859-9″ ise ve kelimelerin ilk harflerini büyük yapmak istiyorsanız, aşağıdaki classın işinize yarayacağından eminim.
class StringCases
{
public function strToUpper($value)
{
$value = str_replace("ç", "Ç", $value);
$value = str_replace("ğ", "Ğ", $value);
$value = str_replace("ı", "I", $value);
$value = str_replace("i", "İ", $value);
$value = str_replace("ö", "Ö", $value);
$value = str_replace("ü", "Ü", $value);
$value = str_replace("ş", "Ş", $value);
$value = strtoupper($value);
$value = trim($value);
return $value;
}
public function strToLower($value)
{
$value = str_replace("Ç", "ç", $value);
$value = str_replace("Ğ", "ğ", $value);
$value = str_replace("I", "ı", $value);
$value = str_replace("İ", "i", $value);
$value = str_replace("Ö", "ö", $value);
$value = str_replace("Ü", "ü", $value);
$value = str_replace("Ş", "ş", $value);
$value = strtolower($value);
$value = trim($value);
return $value;
}
public function uCaseWords($value)
{
$value = $this->strToLower($value);
$value = split(" ", trim($value));
$value_tr = "";
for($x=0; $x < count($value); $x++)
{
$value_first = substr($value[$x], 0, 1);
$value_last = substr($value[$x], 1);
$value_first = $this->strToUpper($value_first);
$value_tr .= $value_first . $value_last ." ";
}
$value_tr = trim($value_tr);
return $value_tr;
}
}
Herkesin işine yarayacağından eminim.
6 yorum bulunmaktadır - “Php’de UTF-8 Türkçe karakter sorunu ve çözümü”
Yorum Yapın
Etiketler
Son Yazılar
- Cep telefonu kullanıcılarını mobil siteye nasıl yönlendirilir?
- require vs require_once
- IFrame ‘in yüksekliğini içeriğe göre ayarlamak
- Bmp uzantılı resim dosyasını jpg veya png olarak kaydetmek
- Php Resim Boyutlandırmasında Memory Limit sorunu
Son Yorumlar
- Php’ de Ajax yardımıyla dosya yükleme (File Upload) için chat
- Asp.Net’de Ajax kullanılarak CAPTCHA için Enes Pekkaya
- Asp.Net’de Ajax kullanılarak CAPTCHA için Cenk
- JQuery Form Kontrol için Sedat Kumcu
- Garanti Sanal Pos Kurulumu, Sorunlar ve Çözümler için Enes Pekkaya
Haftanın Özlü Sözü
Bağlantılar
- Hayata Tat Kat
- Innova Bilişim Çözümleri
- Onur Değerli
- Pleksus Bilişim Teknolojileri
- Sinan Gül
- Taner Günal
- Toppik – Minoxil
Arşivler
- Mart 2012
- Şubat 2012
- Ocak 2012
- Aralık 2011
- Kasım 2011
- Ekim 2011
- Eylül 2011
- Temmuz 2011
- Haziran 2011
- Mayıs 2011
- Mart 2011
- Ocak 2011
- Aralık 2010
- Kasım 2010
- Ekim 2010
- Eylül 2010
- Ağustos 2010
- Temmuz 2010
- Haziran 2010
- Mayıs 2010
- Nisan 2010
- Mart 2010
- Şubat 2010
- Ocak 2010
- Haziran 2009
- Mayıs 2009
- Nisan 2009
- Mart 2009


Çok teşekkürler yazınız çok yardımcı oldu.
php nin pdo kütüphanesini kullanmaya yeni başladım, türkçe karakter problemi yaşıyordum ki google dan sitenizi buldum, emeğinize sağlık, teşekkürler.
Ne kadar teşekkür etsem az. PHPBB formunu kullanıyordum.bir türlü sorun çözülmedi.sonunda
$sql=”Select * from phpbb_forums order by forum_id;”;
mysql_query(“SET NAMES ‘utf8′”);
mysql_query(“SET CHARACTER SET utf8″);
mysql_query(“SET COLLATION_CONNECTION = ‘utf8_turkish_ci’”);
$sorgu=@mysql_query($sql,$baglanti);
şeklinde yaptım.Sorun kalmadı. Tekrar teşekkürler.Allah seni her daim sağlıklı ve mutlu etsin.
işinize yaradıysa ne mutlu bana
İyi çalışmalar…
gerçekten çok çok teşekkürler çok işe yaradı.Günlerdir uğraşıyorduk sonunda çözüldü.Biz latin5 ile yapmıştık ama html sayfalarımız utf idi. Sanırım çakışıyordu. Bu kesin çözüm ^^
Teşekkürler