Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utilisez PHP pour vider les valeurs mysql dans le fichier JSON

Devinette aléatoire :json_encode attend des données encodées en UTF-8 et présentera le comportement que vous décrivez sur toute entrée non UTF-8 et non ASCII. Les données que vous obtenez de la base de données sont probablement encodées en Latin-1.

Soit définir votre connexion à la base de données sur utf8 pour recevoir des données encodées en UTF-8 directement à partir de la base de données (voir UTF-8 tout au long ), ou utilisez (et je déteste dire ça, parce que cette fonction est si souvent abusée que ce n'est même pas drôle, mais elle est correctement appliquée ici) utf8_encode sur toutes les données que vous obtenez de la base de données pour les convertir de Latin-1 en UTF-8.

Soit :

// set the connection charset
mysql_set_charset('utf8');

$result = mysql_query("SELECT post_status, post_title FROM wp_posts");

$data = array();
while ($row = mysql_fetch_assoc($result)) { 
    $data['posts'][] = $row;
} 

$json_string = json_encode($data);

...

ou :

$result = mysql_query("SELECT post_status, post_title FROM wp_posts");

$data = array();
while ($row = mysql_fetch_assoc($result)) { 
    $row = array_map('utf8_encode', $row);
    $data['posts'][] = $row;
} 

$json_string = json_encode($data);

...