JSON Türkçe Karakter Çözümü

 bcakir
 18 Aralık 2011
 Php

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.

 2.646 Okunma

Bu yazıya 7 yorum yapılmış.

  1. eline sağlık, gerçekten çözmüşsün…

  2. teşekkürler gerçekten işe yaradı

  3. Çok teşekkürler. Güzel bir çözüm.

  4. Hocam, bende 1 günümü harcadım bu iş için, şu an db den dönen kayıtlara baktığımda düzgün görünüyor. Fakat uygulama ekranında türkçe karakterler ? olarak gözükmekte.

  5. kod sadece bende mi hata veriyor acaba?
    syntax error, unexpected ‘as’ (T_AS)

    • Fonksiyonda bir hata bulunmuyor, diğer kısımlara göz gezdirin.

  6. Merhaba,
    Ellerine sağlık, verdiğin fonksiyonu php 5.4’ten önceki versiyonlarda kullanıyordum.
    Php 5.4 versiyon ile json_encode($a, JSON_UNESCAPED_UNICODE); bu şekilde kullanabilirsiniz.
    Yazınız google’da üst sıralarda çıktığı için bu yorumu yapma ihtiyacı hissettim. Eminim bir çok kişi hala türkçe karakter problemi yaşıyordur.
    İyi çalışmalar…

Yazı hakkında görüşlerinizi belirtmek istermisiniz?

Daha fazla Php
Kapat