at posts/single.html

$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 での文字化けも解消された。 でも謎だ…。

screenshot (Ruby on Rails) - (4)

関連する日記