$KCODE の指定と落とし穴(UTF-8 対応)
2006-10-03
文字化け対策として、 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 での文字化けも解消された。 でも謎だ…。