Web + Life Hack

〜True But Useless〜

【rails】【mysql】文字化け(日本語が???になる)で泣く前にやるべき1つのこと。

railsにはマイグレーションという便利な機能があります。

これは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 

 

この設定が抜けているとマイグレーションファイルからのテーブル作成においては事象が解決されず、多くの時間を要してしまうため、覚えておくと便利です。