【rails】【mysql】文字化け(日本語が???になる)で泣く前にやるべき1つのこと。
これはmodelの作成やMVCに関するファイルを作成する際に使用するテーブルも作成出来る機能で、DBへSQLを直書きする必要がないため、大変便利です。
(rake db:migrateは忘れずに)
http://www.rubylife.jp/rails/model/index7.html
しかし、マイグレーションファイルをデフォルトで使用するとvarchar2型のカラムに日本語で値を挿入した場合、文字化けが発生します。
その根は深くたくさんの方がハマっていました。
http://d.hatena.ne.jp/holloword/20120611
http://ext.omo3.com/linux/mysql_character_set.html
それでも僕の場合は解決しなかったのでもし、上記でも解決しなかった場合、マイグレーションファイルを以下の内容で変更しましょう。
(中のカラム定義は例のため適宜、変更してください。hogeの箇所も同様に適宜、変更してください。)
変更前:
create_table do |t|
t.integer :id
t.string :hoge_content
t.timestamps
end
変更後:
create_table(:hoge_contents,:options => "ENGINE= MYISAM DEFAULT CHARACTER SET = UTF8" ) do |t|
t.integer :id
t.string :hoge_content
t.timestamps
end
この設定が抜けているとマイグレーションファイルからのテーブル作成においては事象が解決されず、多くの時間を要してしまうため、覚えておくと便利です。