dün isyerindeki bir projede mysql den gelen verileri csv dosyasi olusturup download a sunmam gerekiyorduki orda excell ile devam calisa bilsinler diye.
Beni biraz urastiran sorun ise mysql de verilerin utf-8 olarak kayit edilmis olmasiydi, browser ve notepad de sorun yokdu ama excell de dosya acildiginda istenmedik karakterler vardi ä,ü,ö vs gibi harfler yerine.
Sorun excell den kaynaklaniyordu ve cözüm bulunmasi gerekiyordu.
Internette baya bir aramadan sonra cözümü buldum, mysql den gelen verileri csv dosyasini olusturmadan önce windows-1252 formatina cevirip csv dosyasina öyle yaziyorum.
bunun icin php de yazilmasi gereken header ler kisaltilmis sekilde söyle olmali
header('Content-type: text/csv; charset=windows-1252'); header('Content-Disposition: attachment; filename="export.csv"');
utf-8 den windows-1252 ye cevirmek icin Mikołaj Jędrzejak hazirlamis oldugu ConvertCharset-Klasse kullaniyoruz.
Klass kullanimi kisa örnek:
< ?php $string ="öüä"; include("ConvertCharset.class.php"); $charset = new ConvertCharset(); $yenistring = $charset -> Convert($string, "utf-8", "windows-1252", 0); echo $yenistring; ?>
gerekli aciklamalar class in icinde bulunan doc klasörü icinde
herkeze kolay gelsin;)