$KCODE の指定と落とし穴(UTF-8 対応)
文字化け対策として、 Rails に対して $KCODE を使って文字コードを指定してあげればいいみたい。 ($KCODE を指定しないと文字をシングルバイトとして扱って、 truncate で問題がでてる)
環境ファイル (config/environment.rb) に $KCODE の指定を追加する。
$ vi config/environment.rb # Be sure to restart your web server when you modify this file. $KCODE = 'utf8'
これで解消…と思いきや、何故か $KCODE を指定しても前と変わらない。 コンソールを起動して、 $KCODE を確認しても UTF-8 になっているのに。
$ script/console >> $KCODE => "UTF8"
散々悩んだ挙句、ビューにデバッグを埋め込んでみた。
<%= debug($KCODE) %>
すると、ブラウザからアクセスすると
--- EUC
と表示される。 NONE ならともかく、 EUC とは…。
結局、 ホームディレクトリにある .irbrc に $KCODE の指定をしていたことが原因だった。
$ vi ~/.irbrc $KCODE = 'euc'
なぜ Rails がこんなファイルを見ているのか謎だ…。 とりあえず、この指定を削除すると、 trunscate での文字化けも解消された。 でも謎だ…。