是否进行
mysql_query('SET NAMES `utf8`;', $link);
与相同
$db['default']['char_set'] = 'utf8';
或
$db['default']['dbcollat'] = 'utf8_general_ci';
在Codeigniter上的"application''config''database.php"中?如果没有,我如何在Codeigniter中完成它?
如果您查看CI数据库驱动程序,您会发现设置字符集和排序规则的函数是用db_set_charset($charset, $collation)
调用的
进一步研究这个函数会发现这个函数(来自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"。
如果您需要更改这种行为,我建议您创建自己的数据库驱动程序。