PHP & UTF-8 : Türkçe karakter problemi

Karakter 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″);

Tags: , , , ,  

3 Yorum

  1. Ersin DOGAN

    Güzel bir yazı olmuş. Elinize sağlık.

  2. Ö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.

  3. Çok işime yaradı:) teşekkürler

Yorum yaz

Hey isterseniz bu tagleri kullanabilirsiniz:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>