1

私は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';
4

1 に答える 1

3

config / database.phpファイルで文字セットは何に設定されていますか?データベース構成ファイルについては、こちらをご覧ください。

編集:

UTF-8とCIに関するこの決定的なガイドもご覧ください。

于 2012-06-13T14:01:18.313 に答える