Symfony - 禁用charset的自动设置 - SET NAMES utf8

时间:2012-03-07 22:24:20

标签: php mysql character-encoding doctrine symfony-1.4

我已将以下行添加到我的/etc/my.cnf文件中:

init-connect = 'SET NAMES utf8'

重新启动服务器,命令按预期工作。但是,Symfony(1.4)也通过以下方式为每个查询发出相同的命令:

// lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mysql.php
// line 125
public function setCharset($charset) {
    $query = 'SET NAMES ' . $this->quote($charset);
    $this->exec($query);
    parent::setCharset($charset);
}

我很好奇,是否有一种优雅的方法来禁用charset的自动设置?对于来自Symfony的每个查询,发出两个执行相同操作的查询没有多大意义。

1 个答案:

答案 0 :(得分:0)

将此事件监听器从lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionListener.class.php复制到lib/database/sfDoctrineConnectionListener.class.php并删除第31行$this->connection->setCharset($this->encoding);并清除缓存。 它不是那么优雅,但你不能简单地取消注册听众。