Ruby 1.9.2: irb выбрасывает ArgumentError: неверная последовательность байтов в UTF-8 при вводе немецкого умляута

Я хочу ввести немецкие умляуты в свой irb, но получаю странную ошибку. Я могу без проблем ввести любой символ äöü , но каждый из ÄÖÜß приводит к следующей ошибке:

$ irb
ruby-1.9.2-p136 :001 > ? # here I entered Ü but it displays only ?
/Users/lorenz/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/ruby-lex.rb:728:in
`block in lex_int2': invalid byte sequence in UTF-8 (ArgumentError)

Я просмотрел множество SO-вопросов, касающихся Ruby, rvm и UTF-8, но ничего не помогло. Большинство из них привязано к рельсам или конфигурации базы данных. Я специально проверил следующее:

локаль настроена правильно

$ locale
LANG="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_CTYPE="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_ALL="de_DE.UTF-8"

Terminal.app установлен на Unicode (UTF-8), а Encoding.default_external установлен правильно:

$ irb
ruby-1.9.2-p136 :001 > Encoding.default_external
 => #<Encoding:UTF-8>

Почему это все еще так сложно в Ruby?

9
задан Phrogz 29 April 2011 в 17:35
поделиться