Selamlar, Bir umut mysql dökümantasyonundan şu alıntıyı yapayım;
A SET NAMES '*x*' statement is equivalent to these three statements: SET character_set_client = *x*; SET character_set_results = *x*; SET character_set_connection = *x*; SET NAMES bu üçünü yapan bir kısayol, bunları, ayrı ayrı dener misiniz? Asıl değinmek istediğim nokta ise mysql'e bir bağlantı açtığınızda, o bağlantı üstünde set names çalıştırırsanız yalnızca aktif oturumda geçerli bir tanımlama yapmış olursunuz. Bu tanım diğer baplantıları etkilemez. Sizin kurgunuzda iki farklı sitenin (dolayısı ile iki farklı connection'un -mı acaba?--) bu tanımlanmadan etkilendiğini, sorunu mysql'i yeniden başlatınca giderebildiğinizi anlıyoruz. Ve size sorular hazırladım; * acaba veritabanı bağlantıları havuzlanıyor olabilir mi? * php tarfında persistence connection kullanıyor musunuz? * mysql'i restart etmek yerine apache'yi yeniden başlattığınızda durum çözülüyor mu? Hala olmadı ise mysql-proxy kurarak bağlantıları debug etmek, mysql server istatistiklerinden aktif bağlantıları incelemek fikir verebilir. Kolay gelsin.. 21 Şubat 2012 11:46 tarihinde Nuri AKMAN <nuriak...@gmail.com> yazdı: > Merhaba Atıf Bey, > > Zaman ayırıp uzun uzun yazdığınız bu faydalı mesaj için çok çok teşekkür > ederim. Yazdıklarınızdan hareketle yaptıklarımı tekrar gözden geçirdim. > Tarayiciya header ve meta tag ile göndermeyi ayrı ayrı denedim. Sonuç > olumsuz. > > Test için bir dosya hazırladım. Ayrıca, mysql tablosunun da dump'ını > aldım. Bunları ekte görebilirsiniz. Belki veritabanında bir hata vardır > düşüncesiyle inceleyebilmeniz için ekte sunuyorum. Kodu çalıştırdığımdaki > firefox ekran görüntüsü de yine dosya içinde mevcut. > > Eğer, set names komutu kullanmadan doğru çıktıyı alabilirsem sorunum > çözülecek düşüncesindeyim. > > Selamlar, > Nuri Akman > > > > 2012/2/21 Atıf CEYLAN <meh...@atifceylan.com> > >> ** >> Merhaba, >> amacim sizin arastirmadan soru sordugunuzu dile getirmek filan degildi. >> Bu sekilde bir dusuncem olmadi. Sadece bu konuda uzun zamandir sorun >> yasadiginizi ve bir yerlerde gozden kacirdiginiz birseyler olabilecegini >> vurgulamak istedim. >> >> karakter set olayi temelde birkac basligi olan bir konu. Bunun php veya >> bir programlama dili ile dogrudan iliskisi yok. Veriyi saklarken karakter >> set belirlersiniz, birde gosterirken. Eger saklarken karakter set UTF8 >> olsun der sonra gosterirken farkli bir set olsun derseniz o zaman bunu ya >> db sunucunuzun donusturmesi ya da uygulama tarafinda sizin donusturmeniz >> gerekir. UTF-8 temelde ingilizcede olmayan karakterlerin kullanilmasi icin >> gelistirilmistir. Siz "A" yazdiginizda bu "A" olarak 1 byte olarak >> saklanir. Ancak "Ğ" yazmak istediginizde bu iki byte uzunlugunda bir >> karakter olarak saklanir. UTF-8 bircok dili ayni anda iceren genis bir >> settir. Bu nedenle sadece turkce kullanilacak bir proje icin eger db boyutu >> onemli ise (diyelim ki 10 TB veri saklamak gerekiyor) o zaman sadece o dile >> has olusturulmus karakter set ile veri kaydedilebilir. Ornegin Latin5 >> (ISO-8859-9). Bunda durum utf-8 gibi degildir. Tum set sadece turkce >> karakterleri icerir diyelim. >> >> Buna gore siz veritabaninizda (mysql icin) tum tablolarinizi veya her >> field icin ayri ayri dil seti kullanabilirsiniz. Ancak latin1 (isvecce) >> setindeki bir tabloya turkce karakter basarsaniz o zaman db ile kulahlari >> degisirsiniz. >> Burada muhim olan ikinci nokta devreye girer. O da veritabanindan >> saklandigi formattaki veriyi hangi set olarak isteyeceginizdir. Mysql >> default olarak latin1 kabul eder (hala oyle mi bilemiyorum). Bunun anlami >> client tarafinda (php olabilir baska bir client olabilir) veri cekilecegi >> zaman mysql veriyi client default karakter setine gore gondermek >> istemesidir. Eger siz mysql konfigurasyonunda global olarak benim >> client'larimin karakter setleri latin5 derseniz, sakladigi veri utf-8 ise >> veriyi latin5 olarak cevirip gondermek ister. Arada japon karakteri varsa >> hata alirsiniz (mi emin degilim belki warning donuyordur ya da o >> karakterleri atlayarak gonderiyordur bilemeyecegim. pg tarafinda error >> alirsiniz.) >> >> Birde ikinci yontem olarak client db sunucuya kendi karakter setinin ne >> oldugu bilgisini gonderir ve veriyi ona gore hazirlamasinin talimatini >> verir. set name muhabbeti budur. Buna gore sizin client tarafinda da iki >> konu onem arzeder. >> >> Uygulama kodlarinizin icerisindeki ekrana basilacak kisim hangi dilde >> kayededilmis ise taryiciya sayfanin karakter setinin de o oldugunu >> bildirmeniz gerekir. Ornegin. veri_goster.php dosyaniz icerisinde kodlama >> yaparken, editor-ide her ne kullaniyorsaniz, kaydetme islemini utf8 >> yaptiniz. sonra html meta tag ve header'da karakter set olarak utf8 >> yazdiniz.bu php dosya icerisinde echo "merhaba TÜRKİYE"; yazdiniz ve altina >> da veritabanindan gelen bir veriyi basmak istediniz. >> >> Eger db'de sakladiginiz veri latin5, db global degiskenleri icerisinde >> client encoding latin5 ise ve siz kodunuzda "set name" ile herhangi bir >> encoding belirtmemis iseniz bu durumda ekrana basacaginiz veride echo ile >> yazdiginiz kisim normal gorunecek ama veritabanindan gelen kisim bozuk >> gorunecektir. Tarayiciya header ve meta tag (explorer meta tag baz alir, >> firefox header) olarak belirttigininiz karakter set iso-8859-9 yani turkce >> ise bu durumda veritabanindan gelen bilgi dogru gorunecek, echo ile >> yazdiginiz bilgi bozuk gorunecektir. >> >> Yazim yanlisi filan varsa kusura bakmayin. yeniden okumadan gonderiyorum >> :) >> >> >> >> >> On Tue, 2012-02-21 at 10:15 +0200, Nuri AKMAN wrote: >> >> Merhaba Atıf Bey, >> >> Zaman zaman karşıma çıkan bu karakterset konusunu Google ve sizlerin >> desteği ile çözme gayretindeyim. >> >> Google'da *php mysql utf8 encoding problem* araması yaptığımda, >> google'ın 1 milyondan fazla sonuç bulduğunu gördüm. Sanırım sizin tespit >> ettiğiniz mesajlar da bu rakama dahil :) >> >> Keşke tüm sorunlar sadece bir doküman okunduğunda çözülebilecek kadar >> kolay olsaydı da, biz programcılar anlamsız sorunlar için google araması >> yapmakta geçen zamanımızı sosyal etkinliklerde kullanabilsek! >> >> Son olarak; Sadece bu konuda değil, her konuda elimden geldiğince >> araştırma yapmaya çalışıyorum. Çoğu zaman çözüme ulaşıyorum. Neticeye >> varamayınca da listedeki üstadlara başvuruyorum. >> >> Selamlar, >> Nuri Akman >> >> >> 2012/2/20 Atıf CEYLAN <meh...@atifceylan.com> >> >> Sayin Nuri Hocam, >> Ben sizin ile karakter set olayini o kadar ozdeslestirmisim ki, ufak bir >> google arastirmasi yaptim ve netice itibari ile karakter set olayini basli >> basina bir arastirma konusu yapmanizi oneriyorum. >> >> 2011 17 mayis'ta bir arkadas >> >> >> Listelerden takip ettiğim kadarı ile bir süredir karakter seti ile >> ilgili sorun yaşıyorsunuz. >> >> Aslında defalarca yaşadığınız sorunu çözen yanıtlar aldınız ancak >> sanıyorum bir noktada bir şeyler yanlış gidiyor. >> >> >> seklinde baslayan bir mail yazmis, >> >> 2009 kasim 24'te yine benzer bir soru sormussunuz ve yine ayni konu >> etrafina bir suru arkadas yazmis. >> >> Arkadaşlar, >> >> MySQL database'de Latin5 olarak oluşturulmuş bir tablom var. Bu >> tablodaki verileri UTF-8 formatlı bir PHP dosyamda kullanmka istediğimde >> TR karakterler bozuk geliyor. Dosyanın UTF-8 olan türünü ANSI yapınca da >> ekrandaki diğer yazılar bozuluyor. >> >> Bu sorunu MySQL'deki tablomu UTF-8'e çevirmeden çözebileceğim bir metod >> var mıdır? >> >> Selamlar, >> Nuri Akman >> >> >> Acikcasi bu konuyu cidden arastirmanizi oneriyorum. >> >> >> >> -- >> >> /** >> * *@author* Atıf CEYLAN >> * Software Developer & System Admin >> * http://www.atifceylan.com >> */ >> >> >> _______________________________________________ >> Linux-programlama mailing list >> Linux-programlama@liste.linux.org.tr >> https://liste.linux.org.tr/mailman/listinfo/linux-programlama >> Liste kurallari: http://liste.linux.org.tr/kurallar.php >> >> >> _______________________________________________ >> Linux-programlama mailing >> listlinux-programl...@liste.linux.org.trhttps://liste.linux.org.tr/mailman/listinfo/linux-programlama >> Liste kurallari: http://liste.linux.org.tr/kurallar.php >> >> >> -- >> >> /** >> * *@author* Atıf CEYLAN >> * Software Developer & System Admin >> * http://www.atifceylan.com >> */ >> >> >> _______________________________________________ >> Linux-programlama mailing list >> Linux-programlama@liste.linux.org.tr >> https://liste.linux.org.tr/mailman/listinfo/linux-programlama >> Liste kurallari: http://liste.linux.org.tr/kurallar.php >> >> > > _______________________________________________ > Linux-programlama mailing list > Linux-programlama@liste.linux.org.tr > https://liste.linux.org.tr/mailman/listinfo/linux-programlama > Liste kurallari: http://liste.linux.org.tr/kurallar.php > >
_______________________________________________ Linux-programlama mailing list Linux-programlama@liste.linux.org.tr https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php