From: Nobuyoshi Nakada Date: 2007-09-15T15:10:21+09:00 Subject: [ruby-dev:31789] Re: 文字列のinspect なかだです。 At Sat, 15 Sep 2007 14:27:14 +0900, eklerni wrote in [ruby-dev:31787]: > 1.9で文字列のinspectが文字化けした感じになります。(Windows) > $ruby -v -Ks -e "print 'るびぃ' , 'るびぃ'.inspect" > ruby 1.9.0 (2007-09-14 patchlevel 0) [i386-mswin32_80] > るびぃ"\202\351\202\321\202\241" encoding pragmaがないとリテラルのエンコーディングはすべて US-ASCIIになってますね。 Index: parse.y =================================================================== --- parse.y (revision 13443) +++ parse.y (working copy) @@ -8687,5 +8790,5 @@ parser_initialize(struct parser_params * parser->heap = NULL; #endif - parser->enc = rb_enc_from_index(0); + parser->enc = onigenc_get_default_encoding(); } Index: ruby.c =================================================================== --- ruby.c (revision 13443) +++ ruby.c (working copy) @@ -65,5 +65,5 @@ char *getenv(); char *ruby_inplace_mode = 0; -static NODE *load_file(VALUE, const char *, int); +static NODE *load_file(VALUE *, const char *, int); static void forbid_setid(const char *); @@ -881,14 +881,14 @@ proc_options(int argc, char **argv) ruby_init_loadpath(); - parser = rb_parser_new(); if (e_script) { require_libraries(); + parser = rb_parser_new(); tree = rb_parser_compile_string(parser, script, e_script, 1); } else { if (script[0] == '-' && !script[1]) { forbid_setid("program input from stdin"); } - tree = load_file(parser, script, 1); + tree = load_file(&parser, script, 1); } @@ -912,5 +912,5 @@ proc_options(int argc, char **argv) static NODE * -load_file(VALUE parser, const char *fname, int script) +load_file(VALUE *parser, const char *fname, int script) { extern VALUE rb_stdin; @@ -1028,6 +1028,7 @@ load_file(VALUE parser, const char *fnam require_libraries(); /* Why here? unnatural */ } - tree = (NODE *)rb_parser_compile_file(parser, fname, f, line_start); - if (script && rb_parser_end_seen_p(parser)) { + *parser = rb_parser_new(); + 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); } @@ -1041,5 +1042,7 @@ void * rb_load_file(const char *fname) { - return load_file(rb_parser_new(), fname, 0); + VALUE parser; + + return load_file(&parser, fname, 0); } -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦