zend framework 1.9.4中文乱码解决方法
官方的示例是用sqlite的,所以并没有涉及到mysql的乱码问题。不过这个问题我们得重视它。
贴代码
application/models/Guestbook.php
<?php
class Default_Model_GuestbookMapper
{
protected $_dbTable;
private $_hasAdjustName;
private function adjustNames(){
if(!$_hasAdjustName){
$db=$this->_dbTable->getAdapter();
$db->query('set names gbk');
$_hasAdjustName=true;
}
}
public function setDbTable($dbTable){
if(is_string($dbTable)){
$dbTable= new $dbTable();
}
if(!$dbTable instanceof Zend_Db_Table_Abstract){
throw new Exception('Invalid table data gateway provided');
}
$this->_dbTable = $dbTable;
return $this;
}
public function getDbTable(){
if(null === $this->_dbTable){
$this->setDbTable('Default_Model_DbTable_Guestbook');
}
$this->adjustNames();
return $this->_dbTable;
}
adjustNames是我加的,在每次取表的时候,调用一下这个方法,判断是否设定了数据库编码,如果没有设,就来设一次


