1

我是 CodeIgniter 的新手,遇到了将特殊字符插入 MySQL 数据库的问题。我正在使用以下代码将数据插入数据库:

return $this->db->insert('table_name', $data);

当我查看数据库中的文本时,所有“€”符号都更改为“?” 迹象。此外,其中有一个带有'á'的句子,它被删除了,并且它之后的所有文本都没有插入到数据库中。

我在插入之前对$data做了一个 var_dump 并且字符是正确的。

该字段的 MySQL 排序规则是latin1_swedish_ci。我将其更改为utf8_general_ci以查看它是否会有所不同,但随后完全省略了“€”符号。


解决方案:在数据库插入之前,将字符集设置为latin1

$this->db->query("SET NAMES 'latin1'");
return $this->db->insert('table_name', $data);

另一个解决方案是更改 CodeIgniter 数据库文件 ( config/database.php )。代码应为:

$db['default']['char_set'] = 'latin1';
$db['default']['dbcollat'] = 'latin1_swedish_ci';
4

1 回答 1

3

您在 config/database.php 文件中配置的字符集是什么?有关数据库配置文件的信息,请参见此处。

编辑:

另请查看UTF-8 和 CI 的权威指南

于 2012-06-13T14:01:18.313 回答