Начиная с Rails 1.2, Rails устанавливает для магической переменной $ KCODE в Ruby 1.8 значение "UTF8".Он включает ActiveSupport :: CoreExtensions :: String :: Multibyte для исправления проблем, связанных с неоднозначными операциями для каждого символа или байта.Ваш текстовый файл должен быть UTF-8, Ruby пропустит его, а в макете приложения должен быть указан тег META, объявляющий кодировку документа также UTF-8:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Тогда все должно «просто работать».', но есть некоторые ошибки, описанные ниже.
Если вы работаете на Mac, запустите «script / console» в Terminal.app, а затем вставьте необычные последовательности символов прямо в терминал, например, из Character Viewer.хороший способ поиграть и продемонстрировать это к своему собственному удовлетворению, поскольку вся ОС работает в UTF-8.Я не знаю, какой эквивалент будет для Windows или произвольного дистрибутива Linux.
Например, "⇒" - RIGHTWARDS DOUBLE ARROW - это Unicode 21D2, UTF8 0xE2 (226), 0x87 (125),0x92 (146).Если я вставлю это в Терминал и запросю байтовые значения, я получу ожидаемый результат:
>> $KCODE
=> "UTF8"
>> "⇒"
=> "\342\207\222"
>> puts "⇒"
⇒
... но ...
>> "⇒"[0]
=> 226
>> "⇒"[1]
=> 135
>> "⇒"[2]
=> 146
>> "⇒"[3]
=> nil
Обратите внимание, что вы все еще получаетедоступ к байту с "[]".См. Документацию по многобайтовым расширениям в Rails API (для Rails 2.2, например, по адресу http://railsapi.com/), если вы хотите выполнять строковые операции, в противном случае такие вещи, как "foo.reverse", будут работать неправильно; "foo.mb_chars".reverse "делает это правильно, используя прокси" mb_chars ".