Ostrzeżenie: Ta odpowiedź dotyczy PHP 5.3.5 i niższych. Nie używaj go w PHP w wersji 5.3.6 (wydanej w marcu 2011) lub nowszej.
Porównaj z odpowiedzią Paleca tutaj .
Użyj:
$pdo = new PDO(
'mysql:host=hostname;dbname=defaultDbName',
'username',
'password',
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
);
Wymusza kodowanie UTF-8 na połączeniu PDO. U mnie zadziałało.