json_encode ve mysql unicode sorunu

4 Cevap php

i aşağıdaki javascript kodu var:

http://www.nomorepasting.com/getpaste.php?pasteid=22561

(MakeWindows işlevi bir php değişken olduğunu göstermek için değiştirildi) çalışıyor ancak html unicode karakterleri içeren ve yalnızca ilk unicode karakter kadar lider karakter atanacak olan. Ben küçük bir test dosyası yapmak ve doğrudan article_desc echo eğer quetsions işaretleri yerine doğru simgelerle gösterilir olmasına rağmen, tüm html, çıktı. Ancak json_encode hataları sonucu, kısa html kesmek gibi görünüyor.

edit: burada düz ben ekrana çalışıyorum html mysql veritabanından bir dökümü:

http://www.yousendit.com/download/TTZueEVYQzMrV3hMWEE9PQ

Bu kaynak utf-8 diyor. article_desc dışarı yankılanan üretilen gerçek sayfa kodu burada:

http://www.nomorepasting.com/getpaste.php?pasteid=22566

kesinlikle aynı kayıt, bu yüzden çok farklı görünüyor neden emin değilim.

edit: Bu arayarak giderildi: mysql_query ('SET İSİMLERİ utf8');

4 Cevap

json_encode dizeleri UTF-8 olarak kodlanmış bayt akarsuları olmasını bekler. Sen olacak kullanımı utf-8 kodlanmış içten dizeleri (zaten PHP unicode karakter ile başa çıkmak için tek geçerli yolu hangisi), ya da json üretmek için a different library kullanmak birine.

Ben aynı sorunu vardı. I Zend_Db / mysqli kullanıyorum ve benim veritabanı içeriği aslında UTF8 olduğunu.

Ben UTF8'i kullanmak için veritabanı adaptörü sorarak sorunu çözüldü:

$conf->db->params['charset'] = 'UTF8';

Yerine mysqli'nin PDO kullanıyorsanız, bunu bu şekilde yapabilirsiniz:

$pdoParams = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8;');
$conf->db->params['driver_options'] = $pdoParams;

Eğer Zend_Db kullanabilirsiniz ama mysqli kullanmak istemiyorsanız, size http://php.net/manual/en/mysqli.set-charset.php bakmak isteyebilirsiniz.

Source: http://www.zfsnippets.com/snippets/view/id/13

json_encode( utf8_encode( $Content ) );

Bu sorunu çözecektir.

i json_encode gerekir sanmıyorum. json_encode okunabilir JavaScript formatına PHP diziler ve nesneler kodlar. Eğer ajax içinde düz metin veya html göndermek Eğer json_encode gerekmez