From: "nobu (Nobuyoshi Nakada)" Date: 2013-08-09T21:36:17+09:00 Subject: [ruby-core:56489] [ruby-trunk - Bug #8753] __FILE__.encoding is wrong Issue #8753 has been updated by nobu (Nobuyoshi Nakada). Description updated ---------------------------------------- Bug #8753: __FILE__.encoding is wrong https://bugs.ruby-lang.org/issues/8753#change-41038 Author: jiayp@glodon.com (��� ������) Status: Open Priority: Normal Assignee: naruse (Yui NARUSE) Category: Target version: ruby -v: ruby 2.1.0dev (2013-08-06) [i386-mingw32] Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN =begin A bug introduced by change r42183 (({__FILE__}))'s encoding is wrong. In file ((%ruby.c%)) and function (({load_file_internal})) type (({VALUE})) convert to (({char*})), and lost the encoding info const char *orig_fname = StringValueCStr(argp->fname); and call the (({rb_parser_compile_file})) with the (({char*})) variable tree = rb_parser_compile_file(parser, orig_fname, f, line_start); and in file ((%parse.y%)) and function (({rb_parser_compile_file})), type (({char*})) convert to (({VALUE})) using the ((*filesystem encoding*)). return rb_parser_compile_file_path(vparser, rb_filesystem_str_new_cstr(f), file, start); But the beginning parameter ((*(({argp->fname}))'s encoding*)) not the ((*filesystem encoding*)). What's the principle of ruby's encoding?Why so many (({VALUE})) to (({char*})) converting?Is the (({char*})) has the regular encoding��� I think we should convert the encoding at the boundary and every thing should encoding to internal encoding in the internal, am I right? =end -- http://bugs.ruby-lang.org/