Hocam herhangi bir sorun gorunmuyor. bende de gonderdiginiz ekran
goruntusu olustu. Cunku default client encodingim latin1. 
Bu durumda ilk print_nice ile basilan yerdeki sorguda utf8 kullandigimda
bende goruntu duzeldi. sizde duzelmiyorsa sorun baska demektir ama
duzeliyorsa sorun yok demektir.

Ayirca utf8 degil 8859-9 denedim ve set name 'latin5' yaptim o da
sorunsuz. Sizin gonderdiginiz ekran goruntusunde de set name yaptiginiz
yerden sonrakiler duzgun gorunuyor.
buna gore sorun nerede? Ayni sayfa icerisinde hem latin5 hem de utf8
kullanmak mi istiyorsunuz? 

Son olarak ufak bir bilgi,
header komutu yerinde ini_set('default_charset', 'UTF-8');
kullanabilirsiniz. Bu hem php karakter setinizi hem headerinizi utf8
oldugunu belirtecek.


On Tue, 2012-02-21 at 11:46 +0200, Nuri AKMAN wrote:

> 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 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
>         
>         
>         -- 
>         
>         /**
>          * @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


-- 

/**
 * @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

Cevap