v2.5.2
Giriş yap

Php ve json türkçe karakter hatası

webdevyusuf
3,052 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Veritabanımda json verisi tutuyorum ama javascript ile ekliyorum türkçe karakter varsa onu sayıya çeviriyor bence bu javascript ile alakalı nasıl çözebilirim mesela ğ harfi u011f oluyor bunu nasıl çözücem.

Ve birde şu var veritabanından çekiyorum eğer yazı değiştirilirse diye ben yinede ayrı bir şekilde tekrar kaydediyorum. Normalinde bir sorun yok türkçe karakter olarak ama json eklersek javascript ile böyle oluyor.
Örnek: Kuğ
Çıktı: Kuu011f

Cevap yaz
Cevaplar (4)
tayfunerbilen
1443 gün önce

Varsayılan olarak json_encode() fonksiyonu unicode karakterlere dönüştürüyor. Örneğin;

$arr = [
    'name' => 'Çağla'
];

echo json_encode($arr); // çıktı: {"name":"u00c7au011fla"}

$json = '{"name":"u00c7au011fla"}';
$arr = json_decode($json, true);

print_r($arr);
/*
Array
(
    [name] => Çağla
)
*/

Nihayetinde geri diziye çevirdiğinde karakterler orjinaline dönüyor ancak en başta bunu escape etmesin dersen 2. parametreye JSON_UNESCAPED_UNICODE flagını belirtebilirsin;

$arr = [
    'name' => 'Çağla'
];

echo json_encode($arr, JSON_UNESCAPED_UNICODE); // çıktı: {"name":"Çağla"}
aydinkeskin
1444 gün önce

json çağırdığın php dosyanın üstüne
header('Content-Type: text/html; charset=utf-8');

yada

Content-type: application/json; charset=utf-8

database
1444 gün önce

soru farklıymış edited

webdevyusuf
1444 gün önce

Tamam dostlar ben çözdüm :) Php'de fonksiyon yazdım olay çözüldü ama başka bi türlü çözülüyo olması lazım varsa söyler misiniz.

<?php
function correct($str) {
    $str = str_replace("u0131", "ı", $str);
    $str = str_replace("u00f6", "ö", $str);
    $str = str_replace("u00e7", "ç", $str);
    $str = str_replace("u0130", "İ", $str);
    $str = str_replace("u015f", "ş", $str);
    $str = str_replace("u011f", "ğ", $str);
    return $str;
}
?>