我使用 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']
以验证,但没有输出。
蒂莫