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.