Ağu
9

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ü”

  • Selcuk Yasar 10 Kasım 2010, 22:48

    Çok teşekkürler yazınız çok yardımcı oldu.

  • ismail hakkı 13 Ocak 2011, 20:06

    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.

  • Nimet Demir 11 Mart 2011, 03:19

    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.

  • Enes Pekkaya 11 Mart 2011, 10:23

    işinize yaradıysa ne mutlu bana :) İyi çalışmalar…

  • yasmin 07 Ocak 2012, 15:03

    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 ^^

  • Kemal 07 Mart 2012, 13:48

    Teşekkürler

Yorum Yapın

 

Twitter'dan Takip Et! Twitter'dan Takip Et!

Etiketler

Son Yazılar

Son Yorumlar

Haftanın Özlü Sözü

Akıllı bir adam yalnız kendi tecrübelerinden, çok akıllı bir adam başkalarının da tecrübelerinden yararlanır. (Çin Atasözü)

Bağlantılar

Arşivler