Selam, Sanıyorumki sizin de dediğiniz gibi, iki bağlantının karakter kodlaması farklı.
Çözüm olarak load data infile komutunda spesifik olarak karakter kodlamasını belirtebilirsiniz. Veya my.cnf'ye [mysqld] bölümüne aşağıdaki yapılandırma girmeniz halinde mysql sunucusu kendisine gelen tüm bağlantılarda öncelikle init-connect ile vermiş olduğunuz sql'i çalıştıracak. init_connect='SET NAMES utf8' Bu şekilde o sunucuya açılan her bağlantının varsayılan olarak utf8 kodlama kullanacağını garanti altına alabilirsiniz. Kolay gelsin, 16 Mayıs 2012 13:27 tarihinde What you get is Not what you see < [email protected]> yazdı: > > > 2012/5/9 Mehmet Gürevin <[email protected]> > >> Selam, >> >> Öncelikle: >> http://mail.linux.org.tr/pipermail/linux-programlama/2012-February/thread.html#13984 >> >> UTF-8 ve ISO-8859-9 alt kümeleri birbiri ile uyumlu değiller. Dolayısı >> ile UTF-8 kodlamada çalışan bir sisteme ISO-8859-9 veri gönderirseniz >> karakter eşleşme sorunları ile karşılaşırsınız. >> >> MySQL'de collation kısmı ise sadece karşılaştırmalarda kullanılan >> mappingi belirtiyor. MySQL söz konusu olduğunda şu 3 kriteri sağlarsanız >> bir sıkıntı yaşamazsınız; >> 1. Verinin saklandığı field utf8 olmalı >> 2. Aktif connection için bağlantı karakter seti utf8 olmalı. (kısayol: >> set names utf8) >> 3. Kaydedilmek için gönderdiğiniz veri utf8 kodlanmış olmalı. >> >> Bahsettiginiz mailleri okudum. Ozellikle sunu > > http://mail.linux.org.tr/pipermail/linux-programlama/2012-February/013997.html > Kullandigim tablo ve dosyalarda bir kodlama sorunu olmadigina ve mysql ve > phpnin de genel olarak dogru ayarlandigina > inanmis olmama ragmen bugun benzer bir sorun ile karsilastim. Sorun bir > onceki ile tam ayni degil. > Oncekinde mysql utf8 tabloya verileri load data infile ile yuklemistim. > Collation utf8_turkish_ci olunca durum duzelmisti (nedense?). > > Bu sefer benzer bir tabloya sql insert cumleleri kullanarak yukledim. > Yukledigim dosyanin kodlamasi utf8 olmasina ragmen > sql cumlesini calistirdigimda tabloya eklenen veriler farkli kodlamadaydi. > Dosyayi Iso8859-9 yapinca duzelme oluyordu ama > İ,Ş gibi karakterler kotu cikiyordu. Bunu cozmek icin verileri load data > infile ile baska bir tabloya atip oradan hedef tabloya insert > ettim. Bu sekilde oldu. Direk hedef tabloya load data ile yukleyemedim, > cunku foreign key vardi,yukletmedi. > Dolayisiyla buradan anladigim > load data infile ile yukleyince dogru calisabilen bir seyin insert > komutlariyla calismamasi oldu. > > Bu satirlari yazarken, bu sorunun sebebi olarak mysqle baglanti > farkliliklarinin olabilecegi aklima geldi. > Yani > mysql>load data infile .... > ile > # mysql hedeftablo -u user -p < insert.sql > seklindeki 2 farkli baglantinin buna sebep olup olmayacagini dusunuyorum > simdi de. > > Eger mysql promptundayken baglanti kodlamasi utf8 ve bash uzerinden > baglaninca latin1 ise boyle bir sorun yasamis olmam dogal olabilir mi? > > mysql version 5.0.95 > > > > _______________________________________________ > Linux-programlama mailing list > [email protected] > https://liste.linux.org.tr/mailman/listinfo/linux-programlama > Liste kurallari: http://liste.linux.org.tr/kurallar.php > >
_______________________________________________ Linux-programlama mailing list [email protected] https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php
