• 16-08-2021, 23:53:50
    #1
    Merhaba,
    Bir veri çektirme işleminde bir sorun yaşıyorum. Maalesef henüz çözüm bulamadım. Çözümünü bilen bir arkadaş paylaşır ise çok sevinirim

    Çıktı aşağıda ki şekildedir.

    {\"comments\":\"Merhaba ben geldim\\r\\nSelam \\r\\nMerhaba Nas\\u0131ls\\u0131n\\u0131z?\\r\\nNas\\u0131l kay\\u0131t olabilirim?\\r\\nDeneme1\\r\\nDeneme2\\r\\nDeneme3\\r\\nDeneme4\\r\\nDeneme5\\r\\nDeneme6\"}
    Ben burada ki veriden Örneğin "Merhaba Nasılsınız?" Bölümünü encode etmek istiyorum. u0131lsu0131nu0131z? bı kısım kalkmalı türkçeye dönmeli.

    Php kod bloğumda ki verilerin bir kısmı

    $row = $query->fetch(PDO::FETCH_ASSOC);
    
    if($query->rowCount() > 0 ){
    
        $json["data"] = $row;
    
        $json['status'] = true;
    header('Content-Type: application/json');
    
    echo json_encode($json,JSON_UNESCAPED_UNICODE);
    Nasıl çözebilirim ?
  • 17-08-2021, 00:19:18
    #2
    Veriyi önce json_decode edip daha sonra mevcut json_encode fonksiyonuna sokabilir misiniz?
  • 17-08-2021, 00:23:31
    #3
    profweb adlı üyeden alıntı: mesajı görüntüle
    Veriyi önce json_decode edip daha sonra mevcut json_encode fonksiyonuna sokabilir misiniz?
    Bunu denedim ama ilginç bir şekilde hiç bir değişiklik olmadı. Veriyi SQL üstünden çekiyorum.
  • 17-08-2021, 00:25:30
    #4
    Mr_information adlı üyeden alıntı: mesajı görüntüle
    Bunu denedim ama ilginç bir şekilde hiç bir değişiklik olmadı. Veriyi SQL üstünden çekiyorum.
    json_decode işleminden önce str_replace ile (ters slash)" işaretlerini " ile değiştirmeyi denediniz mi?
  • 17-08-2021, 00:26:37
    #5
    profweb adlı üyeden alıntı: mesajı görüntüle
    json_decode işleminden önce str_replace ile " işaretlerini " ile değiştirmeyi denediniz mi?
    İşaretler ile sorunum yok php olmadan da yapabiliyorum onu ama türkçe karakterleri latinize edemedim. Tek sorunum o onu çözebilsem zaten sorun kalmayacak.
  • 17-08-2021, 00:28:29
    #6
    profweb adlı üyeden alıntı: mesajı görüntüle
    json_decode işleminden önce str_replace ile (ters slash)" işaretlerini " ile değiştirmeyi denediniz mi?
    Mr_information adlı üyeden alıntı: mesajı görüntüle
    İşaretler ile sorunum yok php olmadan da yapabiliyorum onu ama türkçe karakterleri latinize edemedim. Tek sorunum o onu çözebilsem zaten sorun kalmayacak.
    Yazdığınız json_encode fonksiyonu zaten bunu yapmalı. O fonksiyona koyduğunuz json elemanı doğru bir dizi elemanı olmalı.
  • 17-08-2021, 00:30:13
    #7
    profweb adlı üyeden alıntı: mesajı görüntüle
    Yazdığınız json_encode fonksiyonu zaten bunu yapmalı. O fonksiyona koyduğunuz json elemanı doğru bir dizi elemanı olmalı.
    $result = json_decode($json, true);
    ile denedim. $result print yaptım null alıyorum bu seferde. Veriyi sql dan çekiyorum veri bu şekilde orjinali jsona çeviriyor. Ancak nedense hala çözemedim araştırıyorum.
  • 17-08-2021, 00:40:29
    #8
    Mr_information adlı üyeden alıntı: mesajı görüntüle
    Merhaba,
    Bir veri çektirme işleminde bir sorun yaşıyorum. Maalesef henüz çözüm bulamadım. Çözümünü bilen bir arkadaş paylaşır ise çok sevinirim

    Çıktı aşağıda ki şekildedir.

    {"comments":"Merhaba ben geldimrnSelam rnMerhaba Nasu0131lsu0131nu0131z?rnNasu0131l kayu0131t olabilirim?rnDeneme1rnDeneme2rnDeneme3rnDeneme4rnDeneme5rnDeneme6"}
    Ben burada ki veriden Örneğin "Merhaba Nasılsınız?" Bölümünü encode etmek istiyorum. u0131lsu0131nu0131z? bı kısım kalkmalı türkçeye dönmeli.

    Php kod bloğumda ki verilerin bir kısmı

    $row = $query->fetch(PDO::FETCH_ASSOC);
    
    if($query->rowCount() > 0 ){
    
        $json["data"] = $row;
    
        $json['status'] = true;
    header('Content-Type: application/json');
    
    echo json_encode($json,JSON_UNESCAPED_UNICODE);
    Nasıl çözebilirim ?
    sorununuz farklı birşeyden olabilir. Verdiğiniz örnek jsonu decode ettiğimde ekranda türkçe olarak görebiliyorum. Ayrıca decode edilmiş diziyi tekrar encodeye sokup tekrar decode ettiğimde de türkçe karakterlerde bir sorun gözükmüyor. Deneme yaptığım kodları aşağıda paylaşıyorum. Tabi ben direk string olarak deniyorum, veriyi dbden çekiyorum demişsiniz belki veritabanı charsetinden veya çalıştığınız dosyanın karakter setinden kaynaklanıyorda olabilir.

    <?php
    $json = "{\"comments\":\"Merhaba ben geldim\\r\\nSelam \\r\\nMerhaba Nas\\u0131ls\\u0131n\\u0131z?\\r\\nNas\\u0131l kay\\u0131t olabilirim?\\r\\nDeneme1\\r\\nDeneme2\\r\\nDeneme3\\r\\nDeneme4\\r\\nDeneme5\\r\\nDeneme6\"}";
    
    $dizi = json_decode($json, true); //ilk decode edişimiz
    print_r($dizi2); //arrayı ekrana bastığımda tr karakter sorunu gözükmüyor.
    
    $json2 = json_encode($dizi); //tekrar encode ediyorum
    $dizi2 = json_decode($json2, true); //encode edilmiş halini tekrar decode ediyorum
    print_r($dizi2); //tekrar encode edilmiş halini ekrana bastığımda yine bir tr karakter sorunu yok.
    Ayrıca:
    Eğer amacınız sunacağınız json verisinde türkçe karakterli olarak sunmaksa onuda test ettim. İlk veriyi json decode yapıp ikinci kez encode yaparken JSON_UNESCAPED_UNICODE kullanırsanız türkçe karakterli olarak json çıktısı alabildim. Denediğim kod:

    <?php
    $json = "{\"comments\":\"Merhaba ben geldim\\r\\nSelam \\r\\nMerhaba Nas\\u0131ls\\u0131n\\u0131z?\\r\\nNas\\u0131l kay\\u0131t olabilirim?\\r\\nDeneme1\\r\\nDeneme2\\r\\nDeneme3\\r\\nDeneme4\\r\\nDeneme5\\r\\nDeneme6\"}";
    $dizi = json_decode($json, true);
    
    $json2 = json_encode($dizi, JSON_UNESCAPED_UNICODE); //buradan çıkan jsonda türkçe karakterlerle json çıktısı alabildim.