Hi You can check this: http://bugs.php.net/bug.php?id=47224
cheers holo 2009/8/10 Ross <[email protected]> > Yes, I did. Didn't work in my setup. > I'd say it's not related to php 5.3.0. More likely it's related to a > particular version of PDO MySQL driver or MySQL itself... > Another solution seems to be to avoid developing under WAMP 2.0. > > On Mon, Aug 10, 2009 at 1:31 AM, holografix .<[email protected]> wrote: > > Hi > > > > Did you try resources.db.params.driver_options.1002 = "SET NAMES utf8" ? > > > > I have this working with php 5.3.0 and didn't need to change zf code. > > > > Cheers > > holo > > > > > > > > 'driver_options' => array(1002 => "SET NAMES UTF8") > > > > 2009/8/9 Ross <[email protected]> > >> > >> Concerning the problem with phpMyAdmin unable to read (and export > >> correctly) Unicode text stored by Zend_Db_Table. In case you are > >> searching the archives here is the solution. > >> > >> First of all, I upload the test project to my hoster and wasn't able > >> to reproduce the problem. So it is environment-related and I am not > >> filling a bug report. My environment: > >> Zend Framework 1.9.0 > >> Apache 2.2.11 > >> PHP 5.3.0 > >> PDO MySQL mysqlnd 5.0.5-dev > >> MySQL 5.1.36 > >> > >> The problem here is that parameter > >> driver_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES 'utf'" is > >> ignored by the underlying system. The workaround is to change > >> Zend/Db/Adapter/Pdo/Mysql.php to the following (starting at line 85): > >> > >> Original: > >> protected function _connect() > >> { > >> if ($this->_connection) { > >> return; > >> } > >> > >> if (!empty($this->_config['charset'])) { > >> $initCommand = "SET NAMES '" . $this->_config['charset'] . > "'"; > >> $this->_config['driver_options'][1002] = $initCommand; // > >> 1002 = PDO::MYSQL_ATTR_INIT_COMMAND > >> } > >> > >> parent::_connect(); > >> } > >> > >> Change to: > >> protected function _connect() > >> { > >> if ($this->_connection) { > >> return; > >> } > >> > >> parent::_connect(); > >> > >> if (!empty($this->_config['charset'])) { > >> $initCommand = "SET NAMES '" . $this->_config['charset'] . > "'"; > >> $this->_connection->exec($initCommand); > >> } > >> } > >> > >> Code to reproduce error: > >> > >> /* > >> CREATE TABLE `test` ( > >> `id` int(10) unsigned NOT NULL AUTO_INCREMENT, > >> `string` varchar(255) COLLATE utf8_unicode_ci NOT NULL, > >> PRIMARY KEY (`id`) > >> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; > >> > >> > >> application.ini: > >> resources.db.adapter = "pdo_mysql" > >> resources.db.params.host = "localhost" > >> resources.db.params.username = "root" > >> resources.db.params.password = "" > >> resources.db.params.dbname = "test" > >> resources.db.params.charset = "utf8" > >> resources.db.isDefaultTableAdapter = true > >> */ > >> > >> $string = 'αβγδε'; > >> > >> $table = new Zend_Db_Table(); > >> $table->setOptions(array( > >> Zend_Db_Table_Abstract::NAME => 'test' > >> )); > >> $id = $table->insert(array( > >> 'string' => $string > >> )); > >> > >> $db = new Zend_Db_Adapter_Pdo_Mysql(array( > >> 'host' => '127.0.0.1', > >> 'username' => 'root', > >> 'password' => '', > >> 'dbname' => 'test' > >> )); > >> $db->query("SET NAMES 'utf8'"); > >> $result = $db->fetchAll("SELECT * FROM test WHERE id = ?", $id); > >> > >> echo "<br />Inserted: " . $string; > >> echo "<br />Fetched: " . $result[0]['string']; > >> > >> > >> Affected environment produces the following: > >> Inserted: αβγδε > >> Fetched: αβγδε > >> > >> Should be: > >> Inserted: αβγδε > >> Fetched: αβγδε > > > > >
