Изменить кодировку базы данных в codeigniter - PullRequest
0 голосов
/ 24 октября 2011

Имеет ли

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

то же самое, что

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

ИЛИ

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

in "application \ config \ database.php "на Codeigniter?Если нет, как я могу сделать это в Codeigniter?

1 Ответ

0 голосов
/ 24 октября 2011

Если вы загляните в драйвер базы данных 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 или новее, вместо 'SET NAMES' используется mysqli_set_charset ().

Если вам нужно изменить этоповедение, я предлагаю вам создать свой собственный драйвер базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...