PHP ve MySQL’de sık yaşanan Türkçe karakter problemleri
Yazar: Muhittin Özer Tarih: 21 Temmuz 2008 – 02:19 -
Benim de önceleri sıkça yaşadığım ama sonunda kesin sonuca ulaştığım ve web tasarımla ilgilenen daha doğrusu ilgilenmeye başlayan birçok arkadaşın da sıkca yaşadığı bir problemin kesin ve net çözümünden bahsetmek istiyorum.. Evet problemimiz PHP ve MySQL ile işlem yapan sistemlerde yaşadığımız karakter sorunumuz. Herşeyden önce ben tüm sistemlerinizde evrensel karakter seti olan UTF-8 kodlamasını tavsiye ediyorum. Ve yapacağım tüm işlemleri UTF-8 üzerine anlatacağım.
İsterseniz konumuz olmasa da öncelikle UTF-8 nedir, ne değildir bundan bahsedelim. UTF-8, 8 bitlik bir karakter kodlamasıdır kısaca ve Unicode Transformation Format teriminin kısaltmasıdır. Evrensel bir kodlama formatıdır ve tüm dillerdeki karakterleri kapsar. Bu nedenle UTF-8 kodlamasını kullanmakla evrensel standartlarda bir karakter kodlaması kullanmış oluruz. Unutmayın ki Google da UTF-8 karakter kodlamasını öneriyor. ( SEO'culara duyurulur
)
Evet şimdi de "Bu karakter kodlamalarını sistemimize nasıl tanıtacağız ki yazdığımız scriptler ve sistemlerde karakter sorunu yaşamayalım?" sorusunun cevabına geçelim yavaş yavaş
Herşeyden önce yapmanız gereken kodlarınızı UTF-8 karakter setinde kodlama yapan bir derleyicide yazmak olmalı. Ve karakter kodlamasını BOM olmadan seçeneğiyle yazmak. Bu konuda detaylı bilgiyi yakuter'in blogundaki UTF-8 BOM (Byte Order Mark) Nedir? yazısında bulabilirsiniz.
Sistemimizi yazmaya başladığımızda ilk yapmamız gereken şey sayfalarımızın HTML karakter yorumlamasını başlık kısmında belirtmek. Bunun için aşağıdaki kodları sayfalarımızın < head > ... < /head > kısmına yerleştiriyoruz:
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Bu işlem sayesinde tarayıcılarımız karakterlerimizi UTF-8 formatında yorumlayacaklardır. Ardından MySQL tablolarımızın tüm karakter kodlamalarını UTF-8 formatına çevirmek için aşağıdaki kodu php ile çalıştırıyoruz:
-
<?php
-
CHARACTER SET utf8
-
DEFAULT CHARACTER SET utf8
-
COLLATE utf8_unicode_ci
-
DEFAULT COLLATE utf8_unicode_ci
-
");
-
?>
veya aşağıdaki kodu phpMyAdmin aracılığıyla SQL sorgusu olarak çalıştırıyoruz:
-
ALTER DATABASE veritanabi_adı
-
CHARACTER SET utf8
-
DEFAULT CHARACTER SET utf8
-
COLLATE utf8_unicode_ci
-
DEFAULT COLLATE utf8_unicode_ci
-
;
Eğer ortada bir veritabanımız yoksa ve yeni bir sistem kuracaksak oluşturduğumuz tüm tablolar ve field'leri utf8_unicode_ci karakter kodlamasında oluşturuyoruz.
Ardından sistemimizde MySQL bağlantı ayarlarını yaptığımız satırların altına aşağıdaki kodu yazıyoruz:
Tüm bu işlemleri uyguladıysanız artık karakter problemi diye birşey lügatimizde kalmadı. Tüm işlemlerinizde dilediğiniz gibi Türkçe karakterlere yer verebilirsiniz.
Etiketler: Karakter Sorunu, PHP ve MySQL, Türkçe
Kategori: PHP ve MySQL |

Merhaba hocam. Öncelikle bu anlatım için çok teşekkürler. Fakat bir sorun var. Sitede bu kodlar çalışıyor. utf-8′le bir sorun kalmıyor. Fakat localhost’da sorun çıkıyor. Bunu nasıl giderebiliriz. adddefaultcharset i değiştirmem lazım ama ne yazıcam. utf-8 denedim olmadı. ?
localhostta apache conf dizinindeki httpd.conf dosyasında
AddDefaultCharset UTF-8
şeklinde tanımlı olması ve biraz daha altında
AddCharset UTF-8 .utf8
ifadesinin yer alması yeterli. Ben Pardus üzerindeki ayarlara baktım bir sorun yok ancak win üzerinde de değişeceğini sanmıyorum…
çok teşekkürler. çok uğraştım sonunda sayenizde çözdüm.