MySQL Türkçe Karakter Problemi Ve Cözümü...

Son güncelleme: 15.05.2009 15:10
  • Php+mysql tabanlı site tasarımları hazırlayan yeni arkadaşların en büyük problemleridir, mysql 4 üzerindeki karakter problemleri. Aslında göründüğü kadar zor birşeyde değildir düzeltmesi. Hem phpnuke hem wordpress kurarken olsun, karşılaştığım en büyük problemdi bu. Bu sadece mysql 4 üzerinde oluşan birşey. Yani mysql 4'ler üstünde karakter kodlama seçenekleri söz konusu.

    Yeni bir veritabanı yarattığınızda, Karşılaştırma(Collation) değerinin latin1_general_ci, latin1_swedish_ci v.b. olduğunu göreceksiniz. Siz bu veritabanı üstüne tablolarınızı yaratır ve kullanıma hazır hale getirirsiniz. Fakat her tablo için varsayılan karşılaştırma değeri, yine veritabanında kullanılan değer olacaktır.
    Aslında karşılaştırma değeri, tabloların dil kodlamasıdır. Ve sadece metin içerikli sütunlarda görünmektedir. Bunun anlamı, o sütunda seçmiş olduğunuz dilin kullanılacağı diyebilirim. Standart olarak swedish geçer. Sizlerin bu sütunlara yollayacağınız kayıtlar ise, isveçce dili göz önünde bulundurularak girilir. Bundan da şu çıkar: isveçcede Türkçe karakter yer almaz, bu yüzden Türkçe karakterler yerine ? v.b. karakter bulacaksınız. Sanırım genel olarak anlatabildim bu kısmı.

    Çözüm Yolu
    Yeni bir veritabanı yaratırken, karşılaştırma değerini daima latin5_turkish_ci seçin. Dilimize ait karakter kodu budur. Bu şekilde veritabanını yaratırsanız, tablolar için yapmanız gereken fazladan birşey yok. Tablo yaratırken, metin değerli sütunların karşılaştırma değerlerini boş bırakabilir yada yine latin5_turkish_ci seçebilirsiniz.

    Sıra php kodlarınızı yazmaya geldiğinde, tabi ki tablonuzun karşılaştırma değerini sql dilinde belirtmelisiniz. Bunun için aşağıda vereceğim kodu kullanacaksınız. Bunu veritabanı bağlantısı kurup, ilgili veritabanını seçtiğiniz satırın bir alt satırana girebilirsiniz.

    PLAIN TEXTmysql_query("SET NAMES 'latin5'");

    Bu kodumuz tüm sorgularda, karşılaştırma değerinin latin5 olacağını söyler. Böylelikte gireceğiniz Türkçe karakterler sorunsuz şekilde tablolara yazılacaktır.

    Mysql 4 üstünde Türkçe karakter hatasını bu şekilde çözebilirsiniz. Ayrıca benzeri uygulamayı, hazır içerik yönetim kodlamaları üstüne de uygulayabilirsiniz.
#19.01.2007 21:22 0 0 0
  • babacan ben dediklerini uygulayamadım peki bunu pbpbb ye nasıl uyarlıycaz yani onda neler yapacaz anlatırsan çok iyi olacak

    kardeş ben halletim sağol
#27.01.2007 08:58 0 0 0
  • BiLqiLer Için Te$ekkürLer...


#07.02.2007 20:05 0 0 0
  • Sql Server 2005 için

    Merhaba;

    Tablo : ID , Ad , Soyad alanlarından oluşsun.

    Excelde de :

    ID Ad Soyad

    1 Hasan Mansur
    2 Figen Çınkır
    3 Sem Göksu

    olsun.SQL Server da ilfgili database de sağ tıklayarak import dediğimizde, kaynak olarak bu exceli gösterelim.Sonrada hedef olarak bu database i .Sonrada Query ile aktarmayı seçerek query olarak :



    SELECT *

    FROM `Sheet1$`

    SQL_Latin1_General_Cp1254_CS_AS


    yazarsan türkçe karakterlerde insert edilir.
#23.02.2007 11:36 0 0 0
  • eLLerine saglık arkadasım
#08.12.2007 09:19 0 0 0
  • türkçeyi katledecekler en sonunda....
#28.04.2009 19:20 0 0 0
  • sağol işime yaradi
#15.05.2009 15:10 0 0 0