Index: Zend/Db/Adapter/Mysqli.php =================================================================== --- Zend/Db/Adapter/Mysqli.php (revision 11422) +++ Zend/Db/Adapter/Mysqli.php (working copy) @@ -313,6 +313,10 @@ require_once 'Zend/Db/Adapter/Mysqli/Exception.php'; throw new Zend_Db_Adapter_Mysqli_Exception(mysqli_connect_error()); } + + if(array_key_exists('charset', $this->_config)) { + $this->_connection->set_charset($this->_config['charset']); + } } /** Index: Zend/Db/Adapter/Pdo/Mysql.php =================================================================== --- Zend/Db/Adapter/Pdo/Mysql.php (revision 11422) +++ Zend/Db/Adapter/Pdo/Mysql.php (working copy) @@ -93,6 +93,20 @@ { return $this->fetchCol('SHOW TABLES'); } + + /** + * @return void + */ + protected function _connect() + { + if ($this->_connection) { + return; + } + parent::_connect(); + if (array_key_exists('charset', $this->_config)) { + $this->_connection->exec('SET NAMES ' . $this->_quote($this->_config['charset'])); + } + } /** * Returns the column descriptions for a table. Index: Zend/Db/Adapter/Pdo/Pgsql.php =================================================================== --- Zend/Db/Adapter/Pdo/Pgsql.php (revision 11422) +++ Zend/Db/Adapter/Pdo/Pgsql.php (working copy) @@ -71,6 +71,20 @@ 'NUMERIC' => Zend_Db::FLOAT_TYPE, 'REAL' => Zend_Db::FLOAT_TYPE ); + + /** + * @return void + */ + protected function _connect() + { + if ($this->_connection) { + return; + } + parent::_connect(); + if (array_key_exists('charset', $this->_config)) { + $this->_connection->exec('SET NAMES ' . $this->_quote($this->_config['charset'])); + } + } /** * Returns a list of the tables in the database.