From: "ko1 (Koichi Sasada)" Date: 2013-08-09T19:39:45+09:00 Subject: [ruby-core:56480] [ruby-trunk - Bug #8753] __FILE__.encoding is wrong Issue #8753 has been updated by ko1 (Koichi Sasada). Assignee set to naruse (Yui NARUSE) ---------------------------------------- Bug #8753: __FILE__.encoding is wrong https://bugs.ruby-lang.org/issues/8753#change-41028 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 A bug introduced by change #42183 __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? -- http://bugs.ruby-lang.org/