Если вы хотите использовать не-ASCII символы в вашем исходном файле, вам нужно объявить кодировку исходного файла. Самая первая строка исходного файла (или вторая, если у вас есть строка shebang) должна быть строкой комментария, которая (приблизительно) соответствует регулярному выражению
#.*?coding[:=]?\s+(.*)(?:\s+.*)?
Другими словами: строка комментария, которая начинается с некоторого материала, затем содержит строку coding
, за которой следует необязательный символ, за которым следует правильное имя кодировки, за которым следует другой материал.
Итак, если вы поставите
# coding: ISO-8859-1
вверху вашего файла, с вами все будет в порядке. Обратите внимание, что регулярное выражение явно разработано для совместимости с такими редакторами, как Vim:
# vim: fileencoding=UTF-8 ft=ruby syn=ruby ts=2 sw=2 ai eol et si
Или Emacs:
# *-* mode: ruby; coding: utf-8; tab-width: 2; indent-tabs-mode: nil *-*
Одна вещь, которая всегда сбивает меня с толку, это то, что Ruby не не всегда автоматически перекодирует строки. Вы должны перекодировать их самостоятельно:
puts 'ä'
# => ä
puts 'ä'.encode($>.external_encoding || Encoding.default_external)
# => ä