Bug #8677

$LOAD_PATH did not encoded into the "internal encoding"

Added by 贾 延平 9 months ago. Updated 7 months ago.

[ruby-core:56139]
Status:Open
Priority:Normal
Assignee:-
Category:core
Target version:-
ruby -v:ruby 2.0.0p277 (2013-07-23 revision 42121) [i386-mingw32] Backport:1.9.3: UNKNOWN, 2.0.0: UNKNOWN

Description

=begin
When I use utf-8 as the internal encoding, and I require some file with Chinese name,and the require failure with:
(({E:/code/rubyinstaller-master/sandbox/ruby19mingw/lib/ruby/2.0.0/rubygems/coreext/kernel_require.rb:51:in `require': incompatible character encodings: UTF-8 and GBK (Encoding::CompatibilityError)}))

I encode the $LOAD_PATH to utf-8 encoding And the problem gone.

So I think we should encoding the $LOAD_PATH into the internal encoding.

Is it right?
If so,I will try to create a patch.I not,please tell me the right way.

thanks a lot
=end

loadpath.patch Magnifier (552 Bytes) 贾 延平, 08/11/2013 03:19 PM

History

#1 Updated by Jon Forums 9 months ago

When require fails, is cmd.exe using codepage 936?

What happens when you chcp 65001 in cmd.exe but do not encode $LOAD_PATH to utf-8?

#2 Updated by 贾 延平 9 months ago

jonforums (Jon Forums) wrote:

When require fails, is cmd.exe using codepage 936?
yes

What happens when you chcp 65001 in cmd.exe but do not encode $LOAD_PATH to utf-8?
require do work with my patch for bug https://bugs.ruby-lang.org/issues/8676,and the $LOAD_PATH's encoding is UTF-8.

#3 Updated by Jon Forums 9 months ago

What happens when you chcp 65001 in cmd.exe but do not encode $LOAD_PATH to utf-8?
require do work with my patch for bug https://bugs.ruby-lang.org/issues/8676,and the $LOAD_PATH's encoding is UTF-8.

OK. But do either of these also fix this failure?
1) chcp 65001 in cmd.exe, or
2) use powershell

I'm curious whether those quick non-ruby changes also work; simple workarounds that don't require your patch + $LOAD_PATH encoding tweak.

#4 Updated by 贾 延平 9 months ago

jonforums (Jon Forums) wrote:

What happens when you chcp 65001 in cmd.exe but do not encode $LOAD_PATH to utf-8?
require do work with my patch for bug https://bugs.ruby-lang.org/issues/8676,and the $LOAD_PATH's encoding is UTF-8.

OK. But do either of these also fix this failure?
1) chcp 65001 in cmd.exe, or
2) use powershell

I'm curious whether those quick non-ruby changes also work; simple workarounds that don't require your patch + $LOAD_PATH encoding tweak.

chcp 65001 can make the $LOADPATH encoding to UTF-8,and use powershell need chcp too.
The patch I mentioned in the other issue is to fix the require path with UTF-8 encoding and NON-ASCII name,and without this patch the $LOAD
PATH is UTF-8 encoding and the required file is UTF-8 encoding too,But can not load file.

#5 Updated by 贾 延平 9 months ago

Submit a patch to use rbstrencode_ospath encode $LOADPATH

#6 Updated by 贾 延平 7 months ago

Hope fix in Ruby 2.1

Also available in: Atom PDF