Bu damar meselenin ağlatmadığı, sızlatmadığı yoktur. Uyutmadığı da pek çoktur. Varsa da kendime ağlıyor ve de helal deyip konuya giriyorum.

Türkçe karakter meselesi PHP ve MySQL tabanlı işlerde başlı başına bir ya da iki yöntemle her zaman malesef aşılamıyor. Bir kaç yerde bazı bazı ufak dokunuşlar yapmak gerekebiliyor. Basit ve anlaşılır yöntem olan adım adım (sekerekten) yöntemiyle başlayalım.

1- Tarayıcı bazlı karakter set tanımı

Browser’lar web projemiz üstündeki <meta> tagındaki anahtarlardan biri olan charset‘te tanımlı olan charset encoding’i dikkate alır. Eğer buraya bir değer atanmaz ise tarayıcının varsayılan olan character set encoding ayarını baz alarak işlem görecektir.

Tam bu esnada “peki charset anahtarına hangi değeri vermeliyizdir? ” sorusu gelmektedir. Bunlardan sadece biri temsili olan iki örnek veriyorum;

  • ISO-8859-9 v.b
  • UTF-8

Burada ISO-8859-9 karakter seti lokal bir settir. Yani bu tanımı yaparak içeriğimizde sadece Türkçe karakterin olacağını keskin bir ifadeyle bildirmiş oluyoruz.

Fakat UTF-8 gibi evrensel nitelik taşıyan bir charset’i baştan tanımlar isek ileride farklı dil içeriklerinde hiç bir sıkıntı yaşamadan ilerlemiş oluruz.

Hoop ahanda böle

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

2- MySQL müdehalesi

Oluşturulan bir veritabanının yine evrensel olan utf-8 karakter set’ine bağlanması gerekmektedir.

CREATE DATABASE `demo`
   CHARACTER SET 'utf8'
   COLLATE 'utf8_general_ci';

Tablolarda da aynı durum geçerlidir.

CREATE TABLE `demo` (
  `id` INTEGER(11) NOT NULL AUTO_INCREMENT,
  `isim` VARCHAR(64) DEFAULT NULL,
  `soyisim` VARCHAR(64) DEFAULT NULL,
  PRIMARY KEY (`id`)
)
ENGINE=MyISAM
CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';

3- PHP’de MySQL database seçimi sonrası karakter set sorgusu tanımlama

PHP üzerinde MySQL bağlantısı sağlayıp database seçimi yaptıktan hemen sonra (SELECT, UPDATE, INSERT işlemleri öncesi) aşağıdaki SET NAMES sorgusunu veritabanınıza göndermeniz yeterli olacaktır.

mysql_connect("host","username","password");
mysql_select_db("demo");
mysql_query("SET NAMES 'utf8'");

4- PHP editörümüzün varsayılan karakter set’ini utf-8 yapma

PHP kodlarını yazdığımız editörün yazı karakter set’ini utf-8 yapmamız yukardaki maddelerin yanında işi biraz daha kesinleştirecektir.

Karşıdan karşıya geçerken önce sola sonra sağa sonra tekrar sola bakın. Görüşmek üzere…