Merhaba arkadaşlar, bu yazımda ne kadar araştırmama rağmen bulamayıp kendi çözümümü ürettiğim, json_encode Türkçe karakter probleminin çözümünü anlatacağım. Sorun, JSON (JavaScript Object Notation) formatının sadece UTF-8 karakter setine izin vermesinden kaynaklanıyor. Çoğu yerde, iconv kullanarak Türkçe karakter probleminin çözüldüğünü anlatmalarına rağmen bende maalesef işe yaramadı. Bundan dolayı da kendime json_encode eden fonksiyon yazdım. Veri iletim formatı olarak çok fazla kullanıldığı için kendi yaptığım bu çözümü sizlerle paylaşmak istedim.
<?php
//Veritabanından kayıt alma
$query=mysql_query("SELECT * From user);
while($row=mysql_fetch_assoc($query))
$kayitlar[]=$row;
//Fonksiyonu çağır ve ekrana sonucu yaz
echo json_turkce($kayitlar);
//Türkçe JSON Fonksiyonu
function json_turkce($dizi){
foreach($dizi as $record){
foreach($record as $key=>$og){
$colm[]='"'.$key.'":"'.$og.'"';
}
$rec[]="{".implode(",",$colm)."}";
unset($colm);
}
$sonuc='['.implode(",",$rec).']';
return $sonuc;
}
?>Yukarıda, veritabanından aldığımız kayıtları JSON formatına çevirdik. Bu çözüm, iki boyutlu yani tablo şeklindeki diziler içindir. Tek boyutlu diziler için (pek fazla gerek olmaz) ise bir kez
foreach kullanmanız yeterlidir. Bu fonksiyonu, verilerinizi UTF-8 karakter setinde kaydetmiyorsanız, Türkçe karakter problemi yaşamamak için rahatlıkla kullanabilirsiniz. Benim işime yaradı, umarım sizlere de fayda sağlar.