From: "NARUSE, Yui" Date: 2008-01-12T03:57:28+09:00 Subject: [ruby-dev:33052] Re: Binary String 成瀬です。 Yukihiro Matsumoto wrote: > まつもと ゆきひろです > > In message "Re: [ruby-dev:33049] Re: Binary String" > on Sat, 12 Jan 2008 02:36:03 +0900, "NARUSE, Yui" writes: > > |ruby -e'print "ほげ"' の "ほげ" には Encoding.default_external を指定し > |てよさそうな気がするのですが、副作用ってありますかね? > > そうですね。あまり問題は発生しないように思います。あと、引数 > なしで標準入力からプログラムを受け付ける時も。 こんな感じですかね。 この時点では default_external ではなく locale encoding でした。 Index: ruby.c =================================================================== --- ruby.c (revision 14996) +++ ruby.c (working copy) @@ -984,9 +984,14 @@ process_options(VALUE arg) if (opt->enc_name != 0) { opt->enc_index = opt_enc_index(opt->enc_name); } + if (opt->enc_index >= 0) { + enc = rb_enc_from_index(opt->enc_index); + } + else { + enc = rb_locale_encoding(); + } if (opt->e_script) { - if (opt->enc_index >= 0) - rb_enc_associate_index(opt->e_script, opt->enc_index); + rb_enc_associate(opt->e_script, enc); require_libraries(); tree = rb_parser_compile_string(parser, opt->script, opt->e_script, 1); } @@ -1021,12 +1026,6 @@ process_options(VALUE arg) } } - if (opt->enc_index >= 0) { - enc = rb_enc_from_index(opt->enc_index); - } - else { - enc = rb_locale_encoding(); - } rb_enc_set_default_external(rb_enc_from_encoding(enc)); return (VALUE)tree; @@ -1153,6 +1152,7 @@ load_file(VALUE parser, const char *fnam require_libraries(); /* Why here? unnatural */ } if (opt->enc_index >= 0) rb_enc_associate_index(f, opt->enc_index); + else rb_enc_associate(f, rb_locale_encoding()); tree = (NODE *)rb_parser_compile_file(parser, fname, f, line_start); if (script && rb_parser_end_seen_p(parser)) { rb_define_global_const("DATA", f); -- NARUSE, Yui DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA