Я хочу ввести немецкий умлаут в свой 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?