使用Zend framework的Zend_Db时如何设置mysql数据库的编码

By SuperTaoer | 三月 25, 2009
Under: 程序 技术 周边
Views:

今天刚才给一个网站在服务器上测试的时候儿发现服务器是乱码儿的,看了下mysql的 status,我自己本地的server默认编码是utf8的,而服务器的是latin1的,所以在我虚拟机上没有问题,到了服务器上就有问题了。

后来增加了mysql配置的charset => ‘utf8’参数仍然不管用,于是上网查资料,

得知从php5.2.9开始,即使给了PDO charset这个参数,php也不会做任何操作,

但是php的PDO提供了这样一个功能:PDO::MYSQL_ATTR_INIT_COMMAND


意思大概就是初始化mysql时执行的命令,于是我在配置参数中这样修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//数据库编码
define('APP_DBCHARSET', 'UTF8');
 
$appZendConfig = array(  'webhost' => APP_URL,
                     'database' => array('adapter' => 'PDO_MYSQL',
                                       'params'  => array('host'     => 'localhost',
                                                        'username' => 'dbuser',
                                                        'password' => 'xxxxxx',
                                                        'dbname'   => 'dbname',
                                                        'tbprefix' => 'pre_',
                                                        'unix_socket' => '/tmp/mysql.sock',
                                                        'charset'  => APP_DBCHARSET,
                                                        'driver_options'  => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES ' . APP_DBCHARSET),
                                                        ),
                                       'regname' => 'db',
                                       ),
);

主要就是红色的那句,这样儿就解决了问题了。

差..好文!! (还没评价)
Loading ... Loading ...

Leave a Message

No Messages

No Messages

RSS feed for comments on this post. TrackBack URI

Leave a Message