RailsのSJIS化

Agile Web Development With Rails: A Pragmatic Guide (The Facets of Ruby Series)

この本をちびちび進行中。

サンプル・プロジェクトのオンラインストアを書いているのだが,データベースに日本語のデータを放り込もうとするとエラーが出た。それで試しにMySQLに直接SJISのデータを与えてからそれをブラウザに表示させようとすると,その日本語データの部分が「?????」となっていた。Railsで作ったアプリケーションで日本語を使うには何か設定がいるもよう。
それで,Railsで日本語を扱う方法を探してみたところ,UTF-8のデータの使い方を見つけた。
http://osakanas.blog19.fc2.com/blog-entry-40.html


app/controllers/application.rbを書き換えればいいらしい。このサイトにあったコードを適当に書き換えたらSJISのデータを扱えるようになった。

class ApplicationController < ActionController::Base
  before_filter :set_charset
  before_filter :configure_charsets
  def set_charset
    @headers["Content-Type"] = "text-html; charset=shift_jis"
  end

  def configure_charsets
    @response.headers["Content-Type"] = "text/html; charset=shift_jis"
    suppress(ActiveRecord::StatementInvalid) do
      ActiveRecord::Base.connection.execute 'SET NAMES SJIS'
    end 
  end
end

問題はこのコードの意味がまだわかっていないってことだな。