Ruby 初心者スレッド Part 18at TECHRuby 初心者スレッド Part 18 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト275:デフォルトの名無しさん 08/03/09 21:38:31 >>274 それでちゃんとできるのは知ってる $KCODEだとできたりできなかったりするのが不思議な昨今です 276:デフォルトの名無しさん 08/03/09 21:41:34 >>273 あ、悪い、$KCODEについては誤解がけっこう蔓延してる $KCODE='s'はRubyスクリプトだから、これが解釈されるということは既に実行済みってことでそのファイルについては手遅れなんだ (それ以降にrequireとかで読み込んだファイルは$KCODEにしたがって解釈してくれる) スクリプトの先頭からShift_JISだと認識した上で読み込んで実行してくれないと困るので、普通は-Ksを使う Windows版Rubyでも、 1行目に #!ruby -Ks とか適当に書いておくだけで、スクリプト解釈前(構文木生成前)に適当に解釈してくれる スクリプトを読み込む ↓ -Ks の出番 スクリプトを解釈する ↓ プログラムを実行する ↓ $KCODE='s' の出番 277:デフォルトの名無しさん 08/03/09 21:48:52 スクリプト中に書き込まれた日本語文字列に駄目文字がなければ $KCODE='NONE'(つまり #!ruby -Ks 無し)でも動くんだよ 駄目文字があった場合はうまく動作しない Ruby作者さんも言っとる ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/41939 > まつもと ゆきひろです > |あまりよい解決方法ではないかもしれませんが,二行目に > |$KCODE='SJIS' > |とするとruby -Ksと同じ挙動になると思います. > | > |#!/usr/bin/env ruby > |$KCODE='SJIS' > | > |のような感じでどうでしょう. > > 残念ながら「$KCODE='SJIS'」の解釈は実行時に行われるので、プ > ログラムの読み込みを行う時点での処理が行われません。たとえば > ソースコードがSJISであった場合に文字列中の「表」などの処理が > 適切に行われないことになります。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch