在codeigniter中更改数据库编码

时间:2011-10-23 21:54:31

标签: php codeigniter

确实

mysql_query('SET NAMES `utf8`;', $link);

相同

$db['default']['char_set'] = 'utf8';

OR

$db['default']['dbcollat'] = 'utf8_general_ci';

Codeigniter上的“application \ config \ database.php”中的

? 如果没有,我怎么能在Codeigniter中做到?

1 个答案:

答案 0 :(得分:0)

如果查看CI数据库驱动程序,您将看到使用db_set_charset($charset, $collation)

调用char设置和排序规则的函数设置

进一步查看该函数将显示此函数(来自mysqli驱动程序):

function _db_set_charset($charset, $collation)
{
    static $use_set_names;

    if ( ! isset($use_set_names))
    {
        // mysqli_set_charset() requires MySQL >= 5.0.7, use SET NAMES as fallback
        $use_set_names = (version_compare(mysqli_get_server_info($this->conn_id), '5.0.7', '>=')) ? FALSE : TRUE;
    }

    if ($use_set_names)
    {
        return @mysqli_query($this->conn_id, "SET NAMES '".$this->escape_str($charset)."' COLLATE '".$this->escape_str($collation)."'");
    }
    else
    {
        return @mysqli_set_charset($this->conn_id, $charset);
    }
}

这基本上意味着如果你使用MySQL 5.0.7或更新版本,则使用mysqli_set_charset()而不是'SET NAMES'。

如果您需要更改该行为,我建议您创建自己的数据库驱动程序。