Rails 2.1 で Shift-JIS
Rails 2.1 で、DBもビューもSJISの場合に、旧来の方法が使えることを確認した。
おさらい。
config/database.yml で、encoding を sjis に設定。
development: adapter: mysql encoding: sjis database: sjisapp_development username: root password: socket: /var/run/mysqld/mysqld.sock
config/environment.rb の先頭で、KCODE を SJIS に設定。
$KCODE = "sjis"
レイアウト(app/views/layouts/application.html.erb) はこんな感じで。
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja-JP" lang="ja-JP"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <title>SJISサイト</title> </head> <body> <%= yield %> </body> </html>
いつも W3C のトップページからぱくってカスタマイズしてる。
他のビューファイルもCP932で保存。
コントローラーやモデルでも日本語リテラル書く場合はCP932で保存。
app/controllers/application.rb で、before_filter かまして、HTTPレスポンスヘッダ Content-Type の値で SJIS だと告げるようにする。
class ApplicationController < ActionController::Base ... before_filter :set_charset protected def set_charset headers["Content-Type"] = "text/html; charset=Shift_JIS" end end
こんだけ。
追記:
もっとスマートだろう解決策を書きました。