Ruby:ARGV打断重音字符
>“简历” test.rb Résumé>“R\xE9sum\xE9” 为什么会发生这种情况,我如何让ARGV返回“简历” 我已经设置了chcp 65001,正在使用ruby 1.9.2p290(2011-07-09)[i386-mingw32]Ruby:ARGV打断重音字符,ruby,unicode,encoding,argv,Ruby,Unicode,Encoding,Argv,>“简历” test.rb Résumé>“R\xE9sum\xE9” 为什么会发生这种情况,我如何让ARGV返回“简历” 我已经设置了chcp 65001,正在使用ruby 1.9.2p290(2011-07-09)[i386-mingw32] 编辑在irc上询问之后,我被指示执行chcp 1252>NUL,这解决了问题。由于某些原因,Windows在控制台中不使用UTF-8。所以,尽管Ruby需要UTF-8编码的字符串,但它得到的是Windows-1252编码的字符串 因此,您有几种可能性(
编辑在irc上询问之后,我被指示执行
chcp 1252>NUL
,这解决了问题。由于某些原因,Windows在控制台中不使用UTF-8。所以,尽管Ruby需要UTF-8编码的字符串,但它得到的是Windows-1252编码的字符串
因此,您有几种可能性(幸运的是,我不使用Windows,因此无法测试):
chcp
是否有效,如果有效,为什么无效# encoding: utf-8
ARGV.each do |argument|
p argument
end
似乎您的终端没有向ruby发送UTF-8编码字符串。
p参数。编码
返回#;put参数
返回R�总和�对,Ruby接受UTF-8编码的给定字符串。但事实并非如此。
# encoding: utf-8
ARGV.each do |argument|
p argument
end
>> argument = "R\xE9sum\xE9"
=> "R\xE9sum\xE9"
>> argument.force_encoding('windows-1252').encode('utf-8')
=> "Résumé"