1

我使用 CodeIgniter 和 MySQL。我收到以下消息:

无法初始化字符集 iso 8859-15(路径:/usr/share/mysql/charsets/)

我使用托管服务器,无法访问 usr 目录。这是 CI mysql_driver 类中关于字符集的函数:

function db_set_charset($charset, $collation) {
  if (!isset($this->use_set_names)) {
    // mysql_set_charset() requires PHP >= 5.2.3 and MySQL >= 5.0.7, use SET NAMES as fallback
    $this->use_set_names = (version_compare(PHP_VERSION, '5.2.3', '>=') && version_compare(mysql_get_server_info(), '5.0.7', '>=')) ? FALSE : TRUE;
  }
  if ($this->use_set_names === TRUE) {
    return @mysql_query("SET NAMES '".$this->escape_str($charset)."' COLLATE '".$this->escape_str($collation)."'", $this->conn_id);
  } else {
    return @mysql_set_charset($charset, $this->conn_id);
  }
}

CI Config 具有 UTF-8 设置:

$config['charset'] = 'utf-8';

我的 Notepad++ 分别设置为 UTF-8 和 ANSI。如何将全局 MySQL 设置更改为 UTF-8?我是否必须config.php在我的 Web 服务器设置中添加 MySQL 字符设置?喜欢character_set_database="utf-8"

为什么会出现带有 iso-8859 的通知?对我来说,iso-8859 很好,因为它可以显示德语特殊字符,而 UTF 不能。

我有解决方案: CI 在 conig.php 中设置为以下 $config['charset'] = 'utf-8';

当我utf8_encode在打印前使用时,我将 char 设置硬编码为 UTF 8 并且它可以工作。如果我不使用该功能,它将显示错误的字符。我不明白为什么我必须使用该功能,因为配置设置具有 UTF-8。我试图打印$config['charset']以验证,但没有输出。

蒂莫

4

0 回答 0