• 09-07-2009, 12:28:34
    #1
    Üyeliği durduruldu
    <?php
    $dizi1 = array(
                    "1"=>"deneme"
                    ,"2"=>"bu calisiyor"
                    ,"3"=>"6"
    );
    echo json_encode($dizi1);
    $dizi2 = array(
                    "1"=>"Türkçe karekterleri null olarak görüyor"
                    ,"bunda sorun yok"
    );
    echo json_encode($dizi2);
    ?>
    mevcut masaüstü yazilimin datalari üzerinden çalıştığım için php kodlarimi utf-8 e çeviremiyorum. kodlama windows-1254 şeklinde.

    aşağıdaki örneği utf-8 olarak çalıştırdığımda çalışıyor yalnız kodlaması windows-1254 kullandığımda çıktı olarak şu metni üretiyor

    {"1":"deneme","2":"bu calisiyor","3":"6"}{"1":"T","2":"bunda sorun yok"}
    olmadı kendim yazacağım fonksiyon ama daha önce aynı sorunla uğraşmış ve sorunu aşmış olan var mı?

    ilgilenen herkese teşekkürler
  • 09-07-2009, 13:24:39
    #2
    Üyeliği durduruldu
    json_encode'nin içinde mb encoding kullanmayı denedinmi ?
  • 09-07-2009, 14:01:01
    #3
    Üyeliği durduruldu
    function mb_convert_encoding_all($value){
        if(is_array($value)){
            array_map('mb_convert_encoding_all', $value);
        }else{
            $value = mb_convert_encoding($value,'UTF-8','ISO-8859-9');
        }
        return $value;
    }
    function json_encode_tr($value){
        if( is_array($value) ){
            $value =  array_map('mb_convert_encoding_all', $value);
        }else{
            $value = mb_convert_encoding($value,'UTF-8','ISO-8859-9');
        }
        return json_encode($value);
    }
    ihtiyaci olan olursa yaptigim çözüm