MySQL-anslutningsinställningarna kan vara felet här. Kör det här MySQL-kommandot när du ansluter till databasen från PHP, innan du kör några andra SQL-kommandon:
SET names 'utf8';
Detta bör ställa in anslutningens kodning till UTF-8. Som du säger är sidan och databasen redan i UTF-8 (det borde också betyda att sidan skickar Content-Type: text/html; charset=utf-8
); själva anslutningen kan av misstag ha en annan kodning som standard :(