Advertencia: Esta respuesta se aplica a PHP 5.3.5 y versiones anteriores. No lo use para PHP versión 5.3.6 (lanzado en marzo de 2011) o posterior.
Compare con La respuesta de Palec aquí .
Usar:
$pdo = new PDO(
'mysql:host=hostname;dbname=defaultDbName',
'username',
'password',
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
);
Obliga a UTF-8 en la conexión PDO. Funcionó para mí.