moriqです。 しん さんは書きました: > 出沢@RoR挑戦中 > > システムが UTF8 な Linux上で、shift-jis で 記述すると > _form.html.erb:7: Invalid char `\216' in expression > documents_controller.rb:7: Invalid char `\216' in expression > というエラ−が出てしまいます。 > > ruby -Ks ./script/server としても > export RUBYOPT="-Ks" のあとで ./script/server としても > documents_controller.rb の最初に $KCODE="SJIS" としても > > 同じエラ−となります。 > > RoR のプログラムで リテラルに shift-jis を使うには > どうしたら良いでしょうか。 > > 扱う対象の既存の DB がshft-jisなので、viewの文字定数と > DBからの文字のコ−ドを合わせるために shift-jisで記述しています。 少なくともrails-2.1.0では config/environment.rb: Rails::Initializer.run do |config| #... end $KCODE='SJIS' としたら効きます。 rails-2.1.0以降は def initialize_encoding $KCODE='u' if RUBY_VERSION < '1.9' end という処理が config/environment.rb: Rails::Initializer.run do |config| #... end の時点で実行されるので $KCODE='SJIS' はこのブロックの後ろに置かないと効かないです。 documents_controller.rb の中に$KCODEを書いても効果がありません。 先に documents_controller.rb を評価しまっているからです。 個人的には、日本語リテラルはプログラム中には書かずに GetTextやDBを使って外部に出したほうが良いと思います。