Lorsque vous utilisez Doctrine DBAL (sur un projet Silex par exemple), voici comment spécifier l'encodage de la base de données.

Ajoutez une classe étendue de DoctrineServiceProvider et surchargez la méthode register(). Vous devrez utiliser le système d'event.

Exemple pour une base de données Mysql



use Silex\Application;
use Doctrine\DBAL\Event\Listeners\MysqlSessionInit;

class DoctrineServiceProvider extends \Silex\Provider\DoctrineServiceProvider
{
  public function register(Application $app)
  {
      parent::register($app);
      $app['db.event_manager']->addEventSubscriber(new MysqlSessionInit('utf8','utf8_unicode_ci'));
  }
}

Notez qu'avec le système d'event, vous pourrez réaliser d'autres actions telles que la mise en place de Behaviors.