为ruby 1.9设置全局默认编码

为ruby 1.9设置全局默认编码,ruby,encoding,ruby-1.9,Ruby,Encoding,Ruby 1.9,我想告诉ruby,所有东西都是utf8,除非另有说明,所以我不必在所有地方都放置这些\encoding:utf-8注释。您可以: 将RUBYOPT环境变量设置为“-E utf-8” 或使用 如果您使用的是环境变量,一般的方法是使用LC_ALL/LANG 两者均未设置:回退到US-ASCII $ LC_ALL= LANG= ruby -e 'p Encoding.default_external' #<Encoding:US-ASCII> $LC\u ALL=LANG=ruby-e'

我想告诉ruby,所有东西都是utf8,除非另有说明,所以我不必在所有地方都放置这些
\encoding:utf-8
注释。

您可以:

  • 将RUBYOPT环境变量设置为“-E utf-8”
  • 或使用

  • 如果您使用的是环境变量,一般的方法是使用LC_ALL/LANG

    两者均未设置:回退到US-ASCII

    $ LC_ALL= LANG= ruby -e 'p Encoding.default_external'
    #<Encoding:US-ASCII>
    
    $LC\u ALL=LANG=ruby-e'p Encoding.default\u external'
    #
    
    设置或:使用该值

    $ LC_ALL=en_US.UTF-8 LANG= ruby -e 'p Encoding.default_external'
    #<Encoding:UTF-8>
    
    $ LC_ALL= LANG=en_US.UTF-8 ruby -e 'p Encoding.default_external'
    #<Encoding:UTF-8>
    
    $LC\u ALL=en\u US.UTF-8 LANG=ruby-e'p Encoding.default\u external'
    #
    $LC_ALL=LANG=en_US.UTF-8 ruby-e'p Encoding.default_external'
    #
    
    两者都已设置:LC_ALL优先

    $ LC_ALL=C LANG=en_US.UTF-8 ruby -e 'p Encoding.default_external'
    #<Encoding:US-ASCII>
    
    $ LC_ALL=en_US.UTF-8 LANG=C ruby -e 'p Encoding.default_external'
    #<Encoding:UTF-8>
    
    $LC\u ALL=C LANG=en\u US.UTF-8 ruby-e'p Encoding.default\u external'
    #
    $LC_ALL=en_US.UTF-8 LANG=C ruby-e'p Encoding.default_external'
    #
    
    我刚从1.9升级到2.0,但出于某种原因,默认的外部编码仍然设置为ASCII。我可以通过在终端中键入以下命令来修复它:

    export RUBYOPT='-E utf-8'
    

    #1不是很便携,2也不是很好,但它至少是自动的:)#1在Windows 10+Ruby 2.2上使我的Ruby键盘崩溃。也就是说,只要我尝试写任何重音,键盘就会停止在ruby控制台上工作(中断除外)。@Cyril Duchon Doris答案是ruby 1.9,因为ruby 2 UTF-8是默认编码。如果有人需要在系统范围内添加编码,这是正确的答案。如果我的系统上没有LC_ALL环境变量,该怎么办。上面的例子是shell代码,而不是Ruby代码。要在Ruby中检查
    LC\u ALL
    的值,请使用
    ENV['LC\u ALL']