Ce que j'ai tendance à trouver résout beaucoup de problèmes :
mysql_query("SET NAMES 'utf8'");
Avant toute requête.
La documentation vous recommande d'utiliser mysql_set_charset
mais je vois souvent cette fonction manquante.
if( function_exists('mysql_set_charset') ){
mysql_set_charset('utf8', $db_con);
}else{
mysql_query("SET NAMES 'utf8'", $db_con);
}