Při prvním pohledu na http://www.nicknettleton.com/ zine/php/php-utf-8-cheatsheet Myslím, že chybí jedna důležitá věc (možná jsem to přehlédl). V závislosti na vaší instalaci a/nebo konfiguraci MySQL musíte nastavit kódování připojení tak, aby MySQL vědělo, jaké kódování očekáváte na straně klienta (myšleno klient straně připojení MySQL, což by měl být váš PHP skript). Můžete to provést ručním vydáním
SET NAMES utf8
dotaz před jakýmkoli jiným dotazem, který odešlete na server MySQL.
Pokud používáte PDO na straně PHP, můžete nastavit připojení tak, aby automaticky zadávalo tento dotaz při každém (opětovném) připojení pomocí
$db=new PDO($dsn, $user, $pass);
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES utf8");
při inicializaci připojení db.