2010-07-05 19 views
8
Array 
(
    [sEcho] => 1 
    [iTotalRecords] => 7521 
    [iTotalDisplayRecords] => 1 
    [aaData] => Array 
     (
      [0] => Array 
       (
        [0] => Nordic Capital Buys SiC Processing 
        [1] => 2010-06-21/nordic-capital-buys-sic-processing 
        [2] => PEHub Media 
        [3] => Business 
        [4] => completed 
        [5] => Nordic Capital has acquired a 70% stake in SiC Processing AG, a German industrial recycling company, from Frog Capital. No sale price was disclosed. SiC Processing’s founding family retains a 25% holding, while former lead investor Zouk Ventures retains a 5% stake. 

        [6] => Admin, China, Frog Capital, Germany, Italy, Iyad Omari, Manufacturing, Norway, PEHub Media, Photovoltaic Wafer Manufacturing, Renewable Energy, Semiconductor, United States 
       ) 

     ) 

) 

echo json_encode($myArr); 

{ "sEcho": "1", "iTotalRecords": 7521, "iTotalDisplayRecords": "1", "aaData": " Nordic Capital Buys [[SiC Processing </a> </div> "" 2010-06-21/Nordic-capitale-buy-sic-elaborazione </div>", "PEHub media", "business", "completato", nulla, " Admin, Cina, Rana Capitale, Germania, Italia, Iyad Omari, Manufacturing, Norvegia, PEHub media, fotovoltaico Wafer Manufacturing, Energia rinnovabile, Semiconductor, Stati Uniti]]}php json_encode ritorno nullo

Nota il nulla nel bel mezzo della stringa dopo completato

Perché questo, quello di fuga/manipolazione ho bisogno di eseguire al fine di codificare questo?

ho cercato, addslashes

+0

funziona per me. Controlla la tua configurazione di PHP, penso che roba di json_ * possa essere disabilitata. –

+0

Si prega di fornire il codice PHP utilizzato per costruire l'array di esempio (e si prega di controllare attentamente le domande durante la pubblicazione - gli esempi forniti dovrebbero fare ciò che si intende fare!) – AllenJB

+1

Si può ottenere un 'var_export' dell'array sorgente per favore? – Charles

risposta

24

Dal manuale:

Si noti che se si tenta di codificare un array contenente valori non UTF, si otterrà i valori nulli nella risultanti stringa JSON. È possibile batch codificare tutti gli elementi di un array con la funzione array_map:

$encodedArray = array_map(utf8_encode, $myArr); 
echo json_encode($encodedArray); 
+0

Grazie seengee, perfetto. In realtà ho usato array_map (htmlentities ... per la mia situazione, ma questo ha salvato il giorno. –

+0

Va notato che suggerire utf8_encode() di solito non è una grande idea, dato che presuppone ciecamente che l'input sia ISO-8859-1. stai affrontando il problema, è importante che tu capisca quale sia il tuo set di caratteri * IS *, e solo THEN convertire (http://php.net/iconv può aiutarti con la seconda parte se NON hai a che fare con ISO -8.859-1). – TML

1

Ho appena provato che lo stesso codice esatto, e restituito il seguente:

{"var1":"test string","var2":"Nordic Capital has acquired a 70% stake in SiC Processing AG, a German industrial recycling company, from Frog Capital. No sale price was disclosed. SiC Processing\u2019s founding family retains a 25% holding, while former lead investor Zouk Ventures retains a 5% stake.","var3":"test string 3"} 

Quale versione di PHP sono in esecuzione? E questo è dal tuo localhost o lo stai facendo su una scatola remota?

+0

Si prega di verificare la mia domanda di nuovo ho aggiornato con il codice completo, come json_encode sta lavorando con il resto della matrice. – Lizard

+0

Quindi, sembra un problema con il quinto elemento dell'array. Posso vedere il codice per la generazione dell'array? – xil3

+0

è solo un campo da un database – Lizard

1

In realtà non restituisce nulla, http://codepad.org/A34KdUf5.

Forse la vostra versione di PHP non supporta json_encode().

+0

Si prega di verificare la mia domanda di nuovo ho aggiornato con il codice completo, come json_encode funziona con il resto della matrice. – Lizard

+1

Nella copia e incolla, probabilmente lo si è inserito inavvertitamente in formato UTF-8, mentre probabilmente la stringa originale non lo era. – devios1

1

per me funziona su 5.2.13. Assicurati di utilizzare almeno PHP 5.2.0 e che PHP non sia stato compilato con --disable-json. Si consiglia inoltre di verificare che la segnalazione degli errori (e/o la registrazione) sia abilitata.

+0

Si prega di verificare la mia domanda di nuovo ho aggiornato con il codice completo, come json_encode sta lavorando con il resto della matrice. – Lizard

0

Il modo più semplice è $store_name = utf8_encode(name_of_varaible) ma si prega di assicurarsi che il set di caratteri è ISO-8859-1.

Problemi correlati