Sau*_*man 3 ruby unicode encoding argv
# encoding: utf-8
foo = "Résumé"
p foo
Run Code Online (Sandbox Code Playgroud)
>"简历"
# encoding: utf-8
ARGV.each do |argument|
p argument
end
Run Code Online (Sandbox Code Playgroud)
test.rb简历 >"R\xE9sum\xE9"
为什么会发生这种情况,我怎样才能让ARGV返回"Résumé"?
我已经设置了chcp 65001并使用了ruby 1.9.2p290(2011-07-09)[i386-mingw32]
编辑在询问irc之后,我被指示做chcp 1252>NUL
了解决问题的方法.
出于某种原因,Windows不在您的控制台中使用UTF-8.因此,虽然Ruby期望UTF-8编码的字符串,但它获得了Windows-1252编码的字符串.
所以你有几种可能性(我不能测试,幸运的是,不要使用Windows):
chcp
应该工作,如果是的话,为什么不工作.例:
>> argument = "R\xE9sum\xE9"
=> "R\xE9sum\xE9"
>> argument.force_encoding('windows-1252').encode('utf-8')
=> "Résumé"
Run Code Online (Sandbox Code Playgroud)