MySQL Türkçe Karakter Sorunu

mysql, php Yorum Ekle

Mysql 3.23 veya 4.0 dan 4.1 ve üzeri bir versiyona geçiş yapıldığında bazı enteresan karakter sorunları meydana gelmekte. Türkçe’ye özgü ş,ı,ğ,ü,ç,ö,Ö,Ç,Ş,Ğ,Ü,İ gibi karakterler yerine soru işareti (?) döndürmekte.

Bu sorunun çözümü için yapılması gereken şey MySQL ile olan bağlantınızın doğru dil kodlaması üzerinden yapılmasını sağlamak.

Bunu iki yöntemle yapabiliriz.

1. yöntemde my.ini veya my.cnf dosyalarının içinde bulunan [client] ve [mysqld] bölümlerine

default-character-set=latin5

satırını eklerseniz tüm bağlantılar default olarak Türkçe dilinde yapılacak.

2. yöntemde php veya kullandığınız programlama dili hangisi ise MySQL bağlantısını kurduktan sonra yapacağınız ilk sorguda karakter karşılaştırma setlerinin tanımalamasını yapmak olmalıdır. Bu sorguları her bağlantı komutundan sonra vermelisiniz. İdeal olan sistemlerde bağlantı genelde tek bir dosyanın içindeki bir bölümde tanımlanır. Eğer kodlarınızı ideal sistemlere uyumlu şekilde yazıyorsanız işiniz kolay. Çalıştıracağınız sorgu

@mysql_query ('SET NAMES LATIN5');
@mysql_query ('SET COLLATION_CONNECTION=LATIN5_TURKISH_CI');

4 Yorum “MySQL Türkçe Karakter Sorunu”

  1. mehmet Diyor:

    bunların hepsini denedim düzelen bişey yok en iyisi eski tas eski hamam devam etmek

  2. gökhan bora Diyor:

    latin5 yerine utf8 kullanmanızı öneririm.

  3. Anonim Diyor:

    [...] [...]

  4. Hadi Diyor:

    Merhaba
    Ben tüm php dosyalarımın header tagında utf8 dilini seçtim
    mysql tablo ve tablo verilerinin dilini utf8_general_ci seçtim
    configirasyon dosyalarımda utf8_general_ci şeklinde.

    Şimdi sorunum şu. php sayfalarımdan Mysql veri tabanına gönderdiğim Türkçe karakterler (örneğin ŞEKER) veritabında (ÅžEKER) bu şekilde görünüyor. php sayfalarında veriyi çağırıp yazdırdığımda ise ŞEKER şeklinde yazıyor ama ORDER BY ile sıralamada ŞEKER kelimesini A… ile B… harfi arasına yer alıyor.

    Joomla yı incelediğimde ise onun da MySQL veritabanında ytf8_general_ci dilini kullandığını gördüm. Ama veritabanında Türkçe karakterler Türkçe şekilleri ile kaydedilmiş. Yani ŞEKER olarak görünüyor. Bu yüzden PHP ORDER BY komutu ile listeleme işlemini de doğru yapıyor.

    Benim sorunum sanırım veritabanına Türkçe karakterleri Türkçe olarak kaydettirememek, bunu nasıl yapabilirim?

Yorum Yaz

Lampforweb 2007 Tüm hakları saklıdır. Tema N.Design Studio
İçerik RSS Yorum RSS Giriş