# encoding: utf-8
foo = "Résumé"
p foo
> “RESUME”
# encoding: utf-8
ARGV.each do |argument|
p argument
end
test.rb简历> “R \ xE9sum \ xE9”
为什么会发生这种情况,如何让ARGV返回“Résumé”?
我已经设置 chcp 65001 并使用 ruby 1.9.2p290(2011-07-09)[i386-mingw32]
编辑在询问irc之后,我被指示执行chcp 1252>NUL
来解决问题。
答案 0 :(得分:7)
出于某种原因,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é"