Всъщност току-що публикувах това - проблем с кодирането на заявка на php mysql
Това, което смятам, че решава много неща е;
mysql_query("SET NAMES 'utf8'");
Преди да се извършат каквито и да било заявки.
Документацията препоръчва да използвате mysql_set_charset
но често виждам, че тази функция липсва.
if( function_exists('mysql_set_charset') ){
mysql_set_charset('utf8', $db_con);
}else{
mysql_query("SET NAMES 'utf8'", $db_con);
}