Problemi con json_encode()

Elranius

Nuovo Utente
17 Apr 2013
11
0
1
Buongiorno a tutti!

Ho preso uno spazio su Altervista e dopo aver caricato il mio piccolo sito con creazione del DB mi trovo a fronteggiare un problema a cui non trovo soluzione.

Come da titolo il problema è nella funzione json_encode().
Utilizzo in una pagina una funzione $get che preleva dei dati dal DB tramite una pagina php.
In questa pagina dopo la query al DB codifico l'array con la funzione json_encode() per poi elaborarlo nella funzione inziale jQuery.
E qui si presenta il problema, se un dato ha un carattere speciale come per esempio "à" la funzione json_encode mi riporta null.
All'inizio leggendo anche qualche forum pensavo fosse un problema di codifica con il DB ma era settato UTF8_unicode_ci e mi sembrava strano.
Cosi leggendo ancora parlavano della codifica dello stesso file php che io ho importato in altervista.
Allora sono entrato nel pannello di controllo e ho creato un file php exnovo direttamente da web e ci ho scritto dentro il seguente codice:

PHP:
<?php

 $row = array("id" => "1","descrizione" => "già");
 echo json_encode($row);
 echo '<br>'.json_last_error(); 
 
?>

quando lo eseguo mi ritorna:

{"id":"1","descrizione":null}
5

Quindi il problema non è legato alla codifica del DB, ne alla codifica del file php... ma allora cosa può essere?!?

Lascio il link alla pagina esempio se qualcuno volesse fare qualche prova:http://daunazanzara.altervista.org/test.php
 
ciao
non uso molto json, però guarda se questo risolve il tuo problema
PHP:
<?php
$row = array("id" => "1","descrizione" => "già");
echo json_encode($row)."<br />";
// echo '<br>'.json_last_error(); 
$row = array("id" => "1","descrizione" => "gi&agrave;");
echo json_encode($row)."<br />";
 //echo '<br>'.json_last_error();
$row = array("id" => "1","descrizione" => "già");
$row_1=array_map("htmlentities",$row);
echo json_encode($row_1)."<br />";
?>
uotput
{"id":"1","descrizione":"gi"}
{"id":"1","descrizione":"già"}
{"id":"1","descrizione":"già"}

ho messo $row_1 tanto per distinguere
 

Discussioni simili