From: Hidetoshi NAGAI Date: 2008-01-17T16:51:26+09:00 Subject: [ruby-dev:33148] Re: Binary String 永井@知能.九工大です. From: "U.Nakamura" Subject: [ruby-dev:33140] Re: Binary String Date: Thu, 17 Jan 2008 09:42:43 +0900 Message-ID: <20080117092723.A1DF.USA@garbagecollect.jp> > というか、1.9で動かす時にmagic commentかそれに類する指定が必 > 要になるようなスクリプトは、そもそも1.8でも-Kが必要だったはず > です。 > ということは、そのスクリプトを実行している人は常に-Kを指定し > ているか、またはshebang行に-Kを書いているはずです。 > そして、1.9は-Kを引き続き互換性のためにサポートしてるんだから > 1.8と同じように動かせるはず、なのですが... いえ,スクリプトには日本語が入っていないけれども, GUI 上では日本語を入力するというケースがあります. この場合は必ずしも -K を指定する必要はありませんよね. $KCODE が NONE であるとき,Tk 上で入力された日本語は Tk の encoding_system 情報に基づいて変換して Ruby 側に渡しています. # もちろん,逆方向 (Ruby -> Tk) についても変換します. 通常はそれでローカルの言語環境に適合しますから, Tk から Ruby に渡された文字列を端末に出力するようなことをしていても 文字化けを生じることはありません. 同一ソースで EUC 環境でも SJIS 環境でも OK となります. # なお,ソースに日本語を含む必要がある場合には, # その部分を別ファイルにわけて読み込むようにすることで # -K なしでポータビリティを維持する方針としてました. バイナリの場合はこの変換をやると当然ダメになるので, 「バイナリだよ」と印をつけるようにしていました. で,Ruby 1.9 でも encoding を利用して「バイナリだよ」と 印をつけようとしたら明示が不可能で...というわけです. -- 永井 秀利 (九工大 知能情報) nagai@ai.kyutech.ac.jp