ここでMySQL接続設定に問題がある可能性があります。 PHPからデータベースに接続するときは、他のSQLコマンドを実行する前に、このMySQLコマンドを実行してください。
SET names 'utf8';
これにより、接続のエンコーディングがUTF-8に設定されます。あなたが言っているように、ページとデータベースはすでにUTF-8にあります(これは、ページがContent-Type: text/html; charset=utf-8
を送信することも意味するはずです。 );接続自体が誤ってデフォルトで異なるエンコーディングを持つ可能性があります:(