Turkcell | Geleceği Yazanlar

Soru & Cevap

Mysql verilerini json'a aktarırken Türkçe karakter sorunu

04.03.2014 - 16:36

Merhaba, Mysql, database, json'dan annlayan arkadaşlara soruyorum. Mysql'den php yardımıyla tablo verilerini json çıktısı halinde alıyorum. Verilerde türkçe karakter olunca "?" ya da "\ssd54s" gibi değerler geliyor. Bunu nasıl çözebilirim? Amacım Mysql'deki verileri listview'e çekmek. Android kodu tamam, tıkır tıkır işliyor, ama tr karakter işi bozuyor :(

21562 Görüntülenme

9 Cevap

Adnan Ertörer
17.01.2019 - 23:12

Yazmış olduğunuz web serviside kontrol etmekte fayda var. Web servisin ürettiği json çıktısına encoding uygulayabilirsiniz. Örneğin .Net C# kullanıyorsanı:

Response.Clear();
Response.ContentType = "application/json; charset=utf-8"; // encoding işlemi
Response.Write(ops.distList(sp_id)); // ops.distList(sp_id) json string geri gönderir, yani siz json stringi buraya yazacaksınız
Response.End();

Umarım faydası olur

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Osman Nuri Kar
20.07.2015 - 12:45

Aynı problemi ben de yaşadım ve benim düştüğüm hataya düşmeyin diye söylüyorum.

Veritabanına verileri manuel olarak phpMyAdmin gibi servisler kullanarak girmeyin sakın. UTF-8 leriniz falan bir işe yaramıyor öyle yaptığınızda.

Basitinden bir php script ile veritabanınıza veriyi kaydedin sonra browse edin eğer Ã¼Ã§ tarzı şeyler görüyorsanız doğru yoldasınız.

Kolay gelsin.

NOT: Çince karakterleri bile yazabilirsiniz ne Türkçesi ;)

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Halil Keskin
13.03.2014 - 12:10

Güzel bir soru olmuş

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Coşkun
04.03.2014 - 22:58

Merhaba Furkan,

[code]

<?php 

ob_start();

@header('Content-type: application/json; charset=utf-8');//json encode için gerekli

include ('include/configInc.php');

include ('classes/tariflerJsonClass.php');

//utf8-to-latin-converter çevirmen gerek 

$query = mysql_query ("SELECT * FROM master_tarifler");

$r = array();

while($row=mysql_fetch_array($query)){

   //oluşturmuş olduğun nesne jsontarifler

    $r[]= new jsonTarifler(cevir($row['id']), cevir($row['buyukresim']), cevir($row['icerik']), cevir($row['durum']));

}

 

function cevir($string){

    

    $gkod=array('\u0131','ý','þ','ð','Ý','Þ','ı','Ç','Åž','ÅŸ','ÄŸ','ü','ö','Ä°');

    $dkod=array('ı','ı','ş','ğ','İ','Ş','ı','Ç','Ş','ş','ğ','ü','ö','İ');

 

    $ykod=str_replace($gkod,$dkod,$string);

 

 

    return $ykod;

 

    }

 

echo json_encode($r);

 

?>

[/code]

şeklinde json çıktısını alırsan sorun yaşamassın.Burda önemli olan nokta "cevir" fonksiyonu ile bozuk gelen karakterleri düzenlemen.Ayrıca php olarak çıktı alırken karakterlerin bozuk çıkmasına aldıış etme, json android ve ios platformunda okurken düzgün okuyacaktır. 

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Ali Özdemir
04.03.2014 - 20:53

Merhaba Furkan,
php kodunda şu kısmı değiştirip dene lütfen:

[code]echo  json_encode($resultArray,JSON_UNESCAPED_UNICODE); [/code]

Kolay gelsin,

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Furkan KURT
04.03.2014 - 23:55
Çok çok teşekkürler Ali :) Çözdüm sorunu sayende ;)
Ali Özdemir
05.03.2014 - 00:07
Rica ederim Faruk, ne demek :)
Ali Özdemir
05.03.2014 - 00:09
** Furkan demek istedim, nedense Faruk oldu; kusura bakma. mesajı düzeltemediğim için açıklama yaptım.
Gökhan
14.12.2016 - 12:17
Çok teşekkürler benim de işime yaradı :)))
Kerem Türker
29.11.2017 - 22:19
Çok teşekkür ederim :)
Oben Işık
04.03.2014 - 20:47

Burada önceki datalar db deki dönüşüm sonrasında bozulmuş olabilirler. Benim önerim utf8-general-ci ile tabloları yaratman ve phpmyadmin den sütunların da tablo defaultu olan uf8-general-ci ile aynı olduğunu turkish de kalmadığını kontrol etmen 

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Furkan KURT
04.03.2014 - 23:52
Hepsini yaptım, olmuyor.
Furkan KURT
04.03.2014 - 19:46

Ali, php belgesini koyuyorum buraya, çözüm bulabilirmisin?

[code]<?php
    header('Content-Type: text/html; charset=utf-8');
    $objConnect = mysql_connect("localhost","*********","************");
mysql_query("set names 'utf8'");
    $objDB = mysql_select_db("*************");
    $strSQL = "SELECT * FROM images WHERE 1  ";
    $objQuery = mysql_query($strSQL);
    $intNumField = mysql_num_fields($objQuery);
    $resultArray = array();
    while($obResult = mysql_fetch_array($objQuery))
    {
        $arrCol = array();
        for($i=0;$i<$intNumField;$i++)
        {
            $arrCol[mysql_field_name($objQuery,$i)] = $obResult[$i];
        }
        array_push($resultArray,$arrCol);
    }
      
    mysql_close($objConnect);
    
    echo json_encode($resultArray);
?>[/code]

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Ali Özdemir
04.03.2014 - 16:49

Merhaba,
Türkçe karakter sorunu için
1- MYSQL alanlarını utf8_general_ci  olarak ayarla
2- PHP kodunda MYSQL bağlantısında şunu yaz:
[code]mysql_query("set names 'utf8'");[/code]
3- PHP dosyanın title/encoding ayarını yine "utf-8" yap

çalışacaktır.

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Furkan KURT
04.03.2014 - 17:05
Merhaba, dediğiniz her şeyi yaptım. ? olarak gözüken TR Karakter şimdi de "\u015" oldu. Düzelmedi?
Ali Özdemir
04.03.2014 - 17:08
php üzerinde echo veya print ile kontrol edince nasıl gözüküyor ?
Ali Özdemir
04.03.2014 - 16:38

Veritabanındaki tablonda karşılaştırma özelliğini utf8_general_ci olarak ayarla ve sonra ilgili içeriğin androide gelmeden MYSQL'de doğru gözüküp gözükmediğini kontrol  et.
 

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Furkan KURT
04.03.2014 - 16:44
Merhaba, cevabın için saol, ama MYSQL'de tr karakterler gayet düzgün gzüküyor. Json alcığım php'de sanırım sıkıntı.

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.