PHP & UTF-8 : Türkçe karakter problemi
02/12/2009 11:54 pm | PHP - Yazan : Eyüp ÇitçiKarakter problemleri bir projeye başlarken eğer düşünülmez ise, en baş ağrıtıcı sorun olur. Dışarıdan kullanılan kütüphaneler, modüller birbiri ardına saçma sapan karakterler gösterir. Bu sorunların hepsini, karakter kodlamasını UTF-8 yaparak kökten çözebilirsiniz.
1 - <head> bölümündeki charseti UTF-8 yapın
UTF-8 diyarına geçmek için yapılması gereken ilk şey.
<META http-equiv="Content-Type" content="text/html;charset=utf-8” />
2 - Düzenlediğiniz html dosyasının UTF-8 ile kaydedildiğinden emin olun.
Buna dikkat etmezseniz, her ne kadar meta tagini değiştirin karakterler sürekli bozuk çıkar. Bunu Zend veya Eclipse de şu şekilde yapabilirsiniz.
Project -> Properties -> Text file encoding -> UTF-8
3 - PHP header fonksiyonunda UTF-8
Direk meta taglere dokunamadığınız zaman bu işi php’nin header fonksiyonu ile de yapabilirsiniz.
header(”Content-type: text/html; charset=utf-8″);
4 - mb_string de UTF-8
Bazen php’nin strlen() gibi string fonksiyonlarını kullanırken Türkçe karakterlerde problem çıkar. Bunu çözmenin en kolay yolu mbstring modülünü yüklemektir.(http://php.net/mb_string) Yani strlen() yerine mb_strlen() fonksiyonunu kullanırız. Bu modüle UTF-8 desteği vermek için php.ini dosyasına şu satırı ekleyebilirsiniz.
ini_set(”mbstring.internal_encoding”,”UTF-8″);
5 - Veritabanları
Veritabanı veya tablo yaratırken utf8-general-ci seçilmelidir ki uygulamanız birden fazla dile sorunsuzca destek versin. Yalnız bunu yaptıktan sonra queryleri çalıştırmadan önce mutlaka karşılaştırma değerini UTF-8 yapın. Yoksa LIKE gibi arama sorgularında problem yaşayabilirsiniz.
mysql_query(’SET NAMES “UTF8″‘);
6 - Doctrine
Doctrine, PHP için yazılmış çok sağlam bir ORM’dir. (http://www.doctrine-project.org). Bunda UTF-8 desteği alabilmek için :
$conn = Doctrine_Manager::connection(‘mysql://username:password@localhost/test’)
$conn->setCharset(’UTF8′);
7 - AMFPHP
Kısaca AMFPHP flash/flex için yazılan bir uygulamada benim PHP’ye ihtiyacım var dediğiniz anda karşınıza çıkan web servis tadında bir kütüphanedir . Karşınıza oldukça karakter problemi çıkar, eğer karakter kodlaması düzgün düşünülmediyse. UTF-8 desteği vermek için gateway.php dosyasındaki
$gateway->;setCharsetHandler(”utf8_decode”, “ISO-8859-1″, “ISO-8859-1″);
bununla değiştirilmelidir
$gateway->setCharsetHandler(”none”, “UTF-8″, “UTF-8″);

02/27/2009 at 16:25
Güzel bir yazı olmuş. Elinize sağlık.
02/27/2009 at 17:22
Önemli ve güzel bir yazı olmuş. Özellikle 2. madde çok önemli, wordpress ile ugrasan arkadasların herhangi yabancı bir tema indirmesi durumunda türkçe karakter problemiyle karsılasmasının nedeni dosyaların UTF-8 ile kayıt edilmemiş olmasıdır. İndirilen tüm dosyaların UTF-8 e donusturulmesi gerekiyor.
09/06/2009 at 03:23
Çok işime yaradı:) teşekkürler