ZF1.8 DB字符集设定
Zend Framework的db 字符集设置,由于ZF的一个bug,以前在设置db的字符集为utf-8时,通常是在bootstrap中设定
$db = Zend_Db::factory($this->_config->db);
$db->query("SET NAMES utf8"); //setup encoding
这种做法的一个缺点就是DB的lazy loading机制变得无效,所有不调用数据库的页面也需要去打开一个数据库链接。困难之处在于每种数据库的charset名称并不相同,之前一直有一个提议,将charset做一个db的option来设置,ZF1.7开始将这个建议实施,现在我们可以用如下方法,设置db的option
<?php $db = new Zend_Db_Adapter_Pdo_Mysql(array( 'host' => 'your_host_or_ip', 'username' => 'your_myslq_username0, 'password' => 'mysql_pass', 'dbname' => 'your_db_name', 'driver_options' => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'utf8\'') ));?>
除此之外,还可以在config中设置,不过由于config文件并不认得常量,因此只能用以下方式来设置:
db.params.driver_options.1002 = “SET NAMES utf8″
其中1002即PDO::MYSQL_ATTR_INIT_COMMAND这个常量的值。
如果想直接修改DB的charset collocation可以参考mysql的charset转化指南。
感谢resource.db.params.charset=”UTF-8″.
相关文章:
可以这样撒
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 =
resources.db.params.charset = utf8
resources.db.params.profiler = true
function _initDb(){
$resources = $this->getPluginResource(‘db’);
$db = $resources->getDbAdapter();
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set(‘db’,$db);
}
博客文章不错,读了。。今天下午到访。望回访。