Chinaunix首页 | 论坛 | 博客
  • 博客访问: 435376
  • 博文数量: 24
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 885
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-14 15:00
文章分类

全部博文(24)

文章存档

2010年(9)

2009年(7)

2008年(8)

我的朋友

分类:

2010-03-11 14:57:54

    最近写程序,朋友推荐使用ADODB进行数据库连接,速度快,支持数据库种类很多,功能也很强大,使用一下觉得很不错。我程序使用Extjs,数据库PostgresQL,字符集使用的是utf-8,ADODB没有做任何改动就使用上了,很不错。
    有另外一个项目,也使用Extjs,数据库使用MySQL5,我把数据库连接也改成了ADODB,但是问题出现了,中文显示的都是???,检查数据库的字符集,Apache的字符集,PHP的字符集都是utf-8的,不知道问题出在了什么地方,把ADODB的源码也读了一遍,也没有找到。
    最后在网上看到了很多朋友都遇到了这样的问题,也提了不少的解决方法,试过后都不行,最后看到了关于Mysql的字符设置的资料,于是修改了ADODB中mydql驱动的代码,解决了问题,先把具体的方法同大家共享一下:
    找到ADODB中的drivers目录下的adodb-mysql.inc.php文件,修改其中的 _connect和 _pconnect两个函数,各增加以下代码:+ @mysql_query("SET NAMES 'utf8'", $this->_connectionID);即可,位置在SelectDB一行之前。
 

 function _connect($argHostname, $argUsername, $argPassword, $argDatabasename)
 {
  if (!empty($this->port)) $argHostname .= ":".$this->port;
  
  if (ADODB_PHPVER >= 0x4300)
   $this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword,
            $this->forceNewConnect,$this->clientFlags);
  else if (ADODB_PHPVER >= 0x4200)
   $this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword,
            $this->forceNewConnect);
  else
   $this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword);
 
  if ($this->_connectionID === false) return false;
  + @mysql_query("SET NAMES 'utf8'", $this->_connectionID);
  if ($argDatabasename) return $this->SelectDB($argDatabasename);
  return true; 
 }


function _pconnect($argHostname, $argUsername, $argPassword, $argDatabasename)
    {
        if (!empty($this->port)) $argHostname .= ":".$this->port;
        
        if (ADODB_PHPVER >= 0x4300)
            $this->_connectionID = mysql_pconnect($argHostname,$argUsername,$argPassword,$this->clientFlags);
        else
            $this->_connectionID = mysql_pconnect($argHostname,$argUsername,$argPassword);
        if ($this->_connectionID === false) return false;
        if ($this->autoRollback) $this->RollbackTrans();
        + @mysql_query("SET NAMES 'utf8'", $this->_connectionID);
        if ($argDatabasename) return $this->SelectDB($argDatabasename);
        return true;    
    }


阅读(2211) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~