Personnellement j'ai résolu le même problème en ajoutant après le code de connexion MySQL :
mysql_set_charset("utf8");
ou pour mysqli :
mysqli_set_charset($conn, "utf8");
ou l'équivalent mysqli OOP :
$conn->set_charset("utf8");
Et parfois, vous devrez définir le jeu de caractères php principal en ajoutant ce code :
mb_internal_encoding('UTF-8');
Du côté du client HTML, vous devez ajouter les données d'en-tête suivantes :
<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
Afin d'utiliser les résultats JSON AJAX (par exemple en utilisant jQuery), vous devez définir l'en-tête en ajoutant :
header("Content-type: application/json;charset=utf8");
json_encode(
some_data
);
Cela devrait faire l'affaire