Сделайте Ruby 1.9, чтобы все исходные файлы были закодированы в кодировке UTF-8. (Даже если требуется перекомпиляция переводчика)

Я хочу перенести приложение rails с Ruby 1.8.7 на 1.9.2. Некоторые из файлов содержат umlauts, например ä/ö/ü, как в строках, так и в комментариях. Файлы были сохранены как UTF-8, но без спецификация (символ байтового байта) в начале.

Как вы, возможно, знаете, Ruby 1.9 отказывается разбирать эти файлы, предоставляя invalid multibyte char (US-ASCII)

Я много гулял и читал, но единственным решением для этого, похоже, было

  • вставить спецификацию или
  • Вставить # coding: utf-8

в начале каждого файла.

Мой редактор выбора (gEdit), похоже, не вставляет спецификацию. Я также читал, что наличие спецификации - это плохая практика, потому что она может сломать некоторые редакторы, она также нарушает сценарии оболочки, если вы хотите использовать нотацию shebang.

EDIT: спецификация разбивает анализатор Ruby 1.8.7, предоставляя syntax error, unexpected kEND, expecting $end (SyntaxError) для файла!

Я попробовал принудительное внешнее кодирование с ruby ​​-Eutf-8: utf-8, но это, похоже, игнорируется при вызове rake (я пробовал:/home/malte/.rvm/gems/ruby-1.9.2-p180/бит/рейк).

Итак, мой вопрос:

Поскольку RVM все равно строит ruby ​​1.9 из исходного кода, существует опция сборки или патч для изменения кодировки по умолчанию от US-ASCII до UTF-8?

Я быстро просмотрел исходный код, но не смог найти строку, в которой установлен по умолчанию (я не эксперт C, жесткий).

Ответы

Ответ 1

Я нашел обходное решение: установить переменную среды RUBYOPT, например, выполнив

export RUBYOPT=-Ku

в вашей оболочке.

При вызове ruby ​​будет установлен параметр -Ku als по умолчанию. Теперь вы можете вызывать все другие инструменты, которые вызывают рубины, не беспокоясь о параметрах. rails server или rake работает и рассматривает все файлы как UTF-8. Никаких спецификаций или магических комментариев не требуется!