Personalmente, resolví el mismo problema agregando después del código de conexión MySQL :
mysql_set_charset("utf8");
o para mysqli:
mysqli_set_charset($conn, "utf8");
o el equivalente mysqli OOP:
$conn->set_charset("utf8");
Y a veces tendrás que definir el juego de caracteres php principal agregando este código:
mb_internal_encoding('UTF-8');
En el lado HTML del cliente, debe agregar los siguientes datos de encabezado:
<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
Para usar los resultados de JSON AJAX (por ejemplo, usando jQuery), debe definir el encabezado agregando:
header("Content-type: application/json;charset=utf8");
json_encode(
some_data
);
Esto debería hacer el truco