2012-07-28 64 views
0

的內容我有用PHP json_encode一個問題,我使用PHP 5.2.6和i。從服務器接收這樣的數據:的Json編碼PHP長陣列

Array (… => Array ([codIdenVerb] => 276122 [codAppe] => 778033 [codCorsoStud] => 00688 [descrizione] => PSICOLOGIA SOCIALE [crediti] => 9.0 [canale] => NESSUNA CANALIZZAZIONE [docente] => TONI ALESSANDRO [facolta] => SCIENZE POLITICHE, SOCIOLOGIA, COMUNICAZIONE [annoAcca] => 2012 [dataAppe] => 25/09/2012 ......... 

...

[note] => La prova scritta si svolgerà il giorno 10 settembre presso l'aula Magna a partire dalle ore 10.oo. La prova orale si svolgerà il giorno 25 settembre presso l'aula B14 a partire dalle ore 9.30. Si ricorda, inoltre, che la prenotazione su INFOSTUD per la data della prova ora è valida e necessaria per sostenere la prova scritta. 

...

[dataInizioPrenotazione] => 06/05/2012 [dataFinePrenotazione] => 30/08/2012 [questionario] => false [SiglaModuloDidattico] => 1010544) [7] => Array…) 

用於編碼我使用$ json_string = json_encode($ data);

但是[note]的部分被切成白色:「note」:「La prova s​​critta si svolger」,「...」
問題在哪裏?如何解決?謝謝!

回答

2

json_encode()預計傳入數據爲UTF-8。

您傳遞給它的數據可能不是UTF-8。

找出它在哪個編碼中,並調整輸入編碼或使用iconv()將數據從原始編碼轉換爲UTF-8。

+0

嗨tnks的迴應,但我已經試試這個:$ text =「這是歐元符號'¬¬'。」; echo'Original:',$ text,PHP_EOL; echo'TRANSLIT:',iconv(「UTF-8」,「ISO-8859-1 // TRANSLIT」,$ text),PHP_EOL; echo'IGNORE:',iconv(「UTF-8」,「ISO-8859-1 // IGNORE」,$ text),PHP_EOL; echo'Plain:',iconv(「UTF-8」,「ISO-8859-1」,$ text),PHP_EOL;但我看到:原文:這是歐元符號'‰'。 TRANSLIT:這是歐元符號' IGNORE:這是歐元符號''。 平原:這是歐元符號'爲什麼? – Doom 2012-07-28 17:02:53

+0

@用戶你的意思是相反的,不是嗎? UTF-8必須是你的*目標*字符集 – 2012-07-28 17:14:51

+0

是的你有權利,我試試這個:$ string = iconv('ISO-8859-1 // TRANSLIT // IGNORE','UTF-8',' SAS「); $ json_string = json_encode($ string); print_r($ json_string);但我看到「s \ u00c3 \ u00a0s」以及如何看到sàa?感謝您的時間和耐心我是新的PHP。 – Doom 2012-07-28 17:55:04