Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby:ARGV打断重音字符_Ruby_Unicode_Encoding_Argv - Fatal编程技术网

Ruby:ARGV打断重音字符

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编码的字符串 因此,您有几种可能性(

>“简历”

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编码的字符串

因此,您有几种可能性(幸运的是,我不使用Windows,因此无法测试):

  • 说服Windows在控制台中使用UTF-8。我不知道
    chcp
    是否有效,如果有效,为什么无效
  • 告诉Ruby默认使用Windows-1252而不是UTF-8
  • 手动将ARGV从Windows-1252转换为UTF-8:
  • 例如:

    # 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é"