RailsのSJIS化
この本をちびちび進行中。
サンプル・プロジェクトのオンラインストアを書いているのだが,データベースに日本語のデータを放り込もうとするとエラーが出た。それで試しに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
問題はこのコードの意味がまだわかっていないってことだな。