Rails2.0でデータベースの文字化け対策(InstantRails-2.0-win)

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

さて先日より、NetBeans6.1InstantRails-2.0-winで、Windowsに環境を作りRuby on Railsの勉強をはじめました。
InstantRails-2.0-winには、データベースとしてMySQL-5.0.27、RailsのバージョンはRails-2.0.2が入っています。

スポンサーリンク

MySQL5以降では、SQLを発行してデータベースやテーブルを作る際に、文字コードを指定したほうが良いみたい。
そうしないと、フォームからPOSTしてデータベースにデータをInsertすると、文字化けが起こりやすいです。
RailsアプリのDBマイグレーション用のファイルは以下の場所にあります。

db/migrate/001_create_hoges

デフォルトのDBマイグレーション用のファイルを利用したところ、データベースにPOSTしたところで案の定、文字化けが起こり「???????」となってしまいました。
「db/migrate/001_create_hoges」を以下のように書き換えます。
文字コードはUTF-8で統一。

db/migrate/001_create_hoges (文字コード指定・UTF-8)

class CreateHoges < ActiveRecord::Migration
  def self.up
    options = {
      :force => true,
      :options => "ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;"
    }
    create_table(:hoges, options) do |t|
      # 省略
    end
  end
 
  def self.down
    # 省略
  end
end

太字の部分が追加した箇所。
さらに、「config/database.yml」も確認して・・・

config/database.yml

development:
  adapter: mysql
  encoding: utf8
  database: hogehoge_development
  username: hoge
  password: hoge
  host: localhost

と、「encoding: utf8」と指定されているように確認する。
このようにして、DBをもう一回マイグレーションしてやると、フォームからPOSTしても文字化けしないで済みます。

スポンサーリンク
 
スポンサーリンク