我是 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';