昨日のRailsでSJISの一部文字が使えない問題の対策が出来た。
原因はまだ良くつかめていないがenvironment.rbで$KCODEを指定しても各コントローラに来る前に$KCODEが「utf8」に戻ってしまうようだ。
ためしにenvironment.rbで
$KCODE = "sjis"
としてコントローラーの中で$KCODE出力してみるとUTF8となっているのだ。
class GaraponController < ApplicationController def garapon p $KCODE # => "UTF8"となってしまう。 end end
おそらくどこかのRailsもモジュールの中で$KCODEをうわがいているのだろう。
対策
状況が分かれば対策は簡単でApplicationControllerの先頭で$KCODEを更にうわがいてやればいい。
class ApplicationController < ActionController::Base $KCODE="s" …
これでDBにSJISで入っているデータもコントローラーにSJISで書いたデータもViewにSJISで書いたデータもちゃんと表示することが出来た。
やっと課題クリアです。