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.

