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

Cevap