UTF-8 değerleri JSON NULL olarak kodlanmış ediliyor

0 Cevap php

I Bu bir oto-Completer parçası olarak kullanılan é, E, C, vb gibi özel karakterler olabilir bazıları bir DB JSON yoluyla (UTF-8) geçirilir anahtar kelimeler, bir dizi var. Örnek:

array('Coffee', 'Cappuccino', 'Café');

Ben DB geliyor gibi dizi olacağını eklemek gerekir:

array('Coffee', 'Cappuccino', 'Café');

Ama JSON gibi kodlar

["coffee", "cappuccino", null];

Ben print_r yoluyla bu yazdırırsanız (), bir UTF-8 kodlu web sayfasında göstermek iyi, ama ben print_r ($ array) kullanarak diziye bakmak istiyorsanız, metin / düz kullanıldığında, café "café ©" olarak aracılığıyla gelir , exit ();.

Ben JSON kodlama önce utf8_encode () kullanarak kodlamak, bu ince yoluyla gelir, ama ne web sayfasında basılı alır "café ©" ve "kafe" dir.

Ayrıca garip, ama json_last_error () tanımsız bir fonksiyonu olarak görülen, ancak json_decode () ve json_encode () iyi çalışması ediliyor.

Herhangi tüm süreç boyunca aynı davranmasına veritabanından UTF-8 kodlanmış veri almak nasıl bir fikir?

Eidt: Burada anahtar kelimeleri alır ve tek bir diziye onları yapar PHP fonksiyonu şudur:

private function get_keywords() 
{
    global $db, $json;

    $output = array();

    $db->query("SELECT keywords FROM listings");

    while ($r = $db->get_array())
    {
        $split = explode(",", $r['keywords']);

        foreach ($split as $s)
        {
            $s = trim($s);
            if ($s != "" && !in_array($s, $output)) $output[] = strtolower($s);
        }
    }

    $json->echo_json($output);
}

Json :: echo_json yöntemi sadece, kodlar başlığı ayarlar ve (Prototip ile kullanım için) yazdırır

EDIT: DB Bağlantı yöntemi:

function connect()
{

    if ($this->set['sql_connect'])
    {
        $this->connection = @mysql_connect( $this->set['sql_host'], $this->set['sql_user'], $this->set['sql_pass'])
                OR $this->debug( "Connection Error", mysql_errno() .": ". mysql_error());
        $this->db = @mysql_select_db( $this->set['sql_name'], $this->connection)
                OR $this->debug( "Database Error", "Cannot Select Database '". $this->set['sql_name'] ."'");

        $this->is_connected = TRUE;
    }

    return TRUE;
}

More Updates: Simple PHP script I ran:

echo json_encode( array("Café") ); // ["Caf\u00e9"]
echo json_encode( array("Café") ); // null

0 Cevap