From: "NARUSE, Yui" Date: 2007-12-28T15:01:49+09:00 Subject: [ruby-dev:32853] Re: Windowでのデフォルトエンコーディング U.Nakamura wrote: > こんにちは、なかむら(う)です。 > > In message "[ruby-dev:32843] Windowでのデフォルトエンコーディング" > on Dec.28,2007 13:33:05, wrote: > | Windows版の 1.9.0-0の動作なんですが、 > | > | irb(main):001:0> RUBY_VERSION > | => "1.9.0" > | irb(main):002:0> "".encoding > | => # > | irb(main):003:0> p "こんにちは世界" > | "\x82\xB1\x82\xF1\x82\xC9\x82\xBF\x82\xCD\x90\xA2\x8AE" > | => "\x82\xB1\x82\xF1\x82\xC9\x82\xBF\x82\xCD\x90\xA2\x8AE" > | irb(main):004:0> > | > | 日本語Windowsでこうなってしまうのはちょっと悲しいと思うのですが、 > | ないか良い手はないですかね? > > 1.8と同じなので-Ksでどうでしょうか。 --encoding=Shift_JIS の方がいいのでは。#! 行を変えるのがいいのですかね。 > という冗談は置いておいて。 > > 1.9では、Encoding.default_externalを、-E(--encoding)または-K > オプションで決定し、これらの指定がなければEncoding.locale_charmap > (相当)で得られる情報から決定します。 > > 現状、例えば日本語版WindowsではEncoding.locale_charmapは"CP932" > を返すようになっています。 > ので、CP932というencodingを定義すれば、この問題も解決します。 > > 現状そうなってないのは、単なる時間不足が理由です。 > Shift_JISのaliasなだけじゃまずいよなあとかそのあたりの検討が > 必要ですね。 ここで問題となっているのは default_external ではなく、string literal encoding ではないでしょうか。CP932 の定義とかは transcode のを使えばいい でしょう。 そもそも、irb 上の文字列 って eval された文字列だから他の環境でも同じ結 果になりませんか。とりあえず手元の MinGW と NetBSD ではそうなっているの ですが。 % ruby19 --encoding=utf-8 -e'eval %q/puts "\xe3\x81\x82".encoding/' ASCII-8BIT -- NARUSE, Yui DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA