Установить глобальную кодировку по умолчанию для ruby ​​1.9

Я хочу сказать ruby, что все это utf8, если только не указано иное, поэтому мне не нужно везде размещать эти комментарии # encoding: utf-8.


person grosser    schedule 06.05.2011    source источник


Ответы (3)


Вы также можете:

  1. установите для переменной среды RUBYOPT значение "-E utf-8"
  2. или используйте https://github.com/m-ryan/magic_encoding.
person tommasop    schedule 06.05.2011
comment
№ 1 не очень портативный, а № 2 не очень приятный, но, по крайней мере, автоматический :) - person grosser; 08.05.2011
comment
# 1 вылетает из строя моя клавиатура Ruby в Windows 10 + Ruby 2.2. т.е. как только я пытаюсь написать любой акцент, на рубиновой консоли перестает работать клавиатура (кроме прерываний). - person Cyril Duchon-Doris; 05.06.2016
comment
@Cyril Duchon-Doris, ответ был для Ruby 1.9, поскольку ruby ​​2 UTF-8 является кодировкой по умолчанию. - person tommasop; 05.06.2016

Если вы используете переменные среды, общий способ — использовать LC_ALL / LANG.

Ни один из них не установлен: возврат к US-ASCII

$ LC_ALL= LANG= ruby -e 'p Encoding.default_external'
#<Encoding:US-ASCII>

Либо установлено: это значение используется

$ 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_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>
person Arne Brasseur    schedule 12.07.2013
comment
Это правильный ответ, если кому-то нужно добавить общесистемную кодировку. - person Saurabh Bhatia; 10.01.2014
comment
Что делать, если в моей системе нет переменной окружения LC_ALL. Он говорит, что LC_ALL не определен, когда я пытаюсь его использовать. - person desbest; 14.08.2015
comment
Приведенные выше примеры представляют собой код оболочки, а не код Ruby. Чтобы проверить значение LC_ALL в Ruby, используйте ENV['LC_ALL'] - person Arne Brasseur; 15.08.2015

Я только что обновился с 1.9 до 2.0, но по какой-то причине внешняя кодировка по умолчанию все еще была установлена ​​​​на ASCII. Я смог исправить это, набрав в Терминале следующее:

export RUBYOPT='-E utf-8'
person Community    schedule 12.07.2014