From: Takao Kouji Date: 2008-12-13T00:48:09+09:00 Subject: [ruby-dev:37409] [BUG:trunk] r20625 default_internal is nil. 高尾宏治です。 trunk の r20625 以降、コマンドラインオプションで渡した default_internal が nil になっています。 $ svn up -r20624 && make && ./ruby -Eutf-8:utf-8 -e 'p([Encoding.default_external, Encoding.default_internal])' [#, #] $ svn up -r20624 && make && ./ruby -Eutf-8:utf-8 -e 'p([Encoding.default_external, Encoding.default_internal])' [#, nil] 調べたところ、コマンドラインオプションの default_internal を適切に処理したあとで、 shebang の default_internal を解析します。 そして、shebang に default_internal の指定がなかった場合、 強制的に default_internal に nil を設定しているようです。 r20624 までは、default_internal を再設定できなかったため問題なかったようです。 以下の修正で手元では問題が解決しています。 Index: ruby.c =================================================================== --- ruby.c (revision 20679) +++ ruby.c (working copy) @@ -1244,7 +1244,7 @@ enc = rb_enc_from_index(opt->intern.enc.index); rb_enc_set_default_internal(rb_enc_from_encoding(enc)); } - else + else if (!rb_default_internal_encoding()) /* Freeze default_internal */ rb_enc_set_default_internal(Qnil);