私はCodeIgniterを初めて使用し、MySQLデータベースへの特殊文字の挿入で問題が発生しました。このコードを使用してデータベースにデータを挿入しています:
return $this->db->insert('table_name', $data);
データベース内のテキストを表示すると、すべての「€」記号が「?」に変更されます。兆候。また、「á」が含まれている文があり、それは削除され、それ以降のすべてのテキストはデータベースに挿入されませんでした。
挿入の直前に$dataに対してvar_dumpを実行しましたが、文字は正しいです。
フィールドのMySQL照合はlatin1_swedish_ciです。utf8_general_ciに変更して、違いが生じるかどうかを確認しましたが、「€」記号は完全に省略されています。
解決策:db挿入の前に、文字セットを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';