Aviso: Esta resposta se aplica ao PHP 5.3.5 e inferior. Não use para PHP versão 5.3.6 (lançada em março de 2011) ou posterior.
Compare com resposta de Palec aqui .
Usar:
$pdo = new PDO(
'mysql:host=hostname;dbname=defaultDbName',
'username',
'password',
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
);
Força UTF-8 na conexão PDO. Funcionou para mim.