Когда вы говорите «выглядит так», вы просматриваете это значение IRB? Он будет экранировать символы диапазона, отличные от ASCII, с экранированием в стиле C последовательностей байтов, которые представляют символы.
Если вы напечатаете их с помощью puts, вы получите их обратно, как и ожидали, предполагая, что ваша консоль оболочки использует ту же кодировку, что и рассматриваемая строка (по-видимому, в этом случае UTF-8, на основе двух байтов, возвращенных для этого символа) . Если вы сохраняете значения в текстовом файле, печать в дескриптор также должна привести к последовательностям UTF-8.
Если вам нужно выполнить перевод между UTF-8 и другими кодировками, особенности зависят от того, используете ли вы Ruby 1.9 или 1.8.6.
Для версии 1.9: http://blog.grayproductions.net/articles/ruby_19s_string для версии 1.8 вы, вероятно, надо посмотреть на Iconv.
Кроме того, если вам нужно взаимодействовать с COM-компонентами в Windows, вам нужно указать ruby использовать правильную кодировку примерно следующим образом:
require 'win32ole'
WIN32OLE.codepage = WIN32OLE::CP_UTF8
Если вы взаимодействуете с mysql, вам необходимо установить параметры сортировки в таблице так, чтобы они поддерживали кодировку, с которой вы работаете. В общем, лучше всего установить сопоставление на UTF-8, даже если часть вашего контента возвращается в других кодировках; вам просто нужно преобразовать по мере необходимости.
В Nokogiri есть некоторые возможности для работы с разными кодировками (вероятно, через Iconv), но я немного отвык от этого, поэтому я оставлю объяснение этого кому-то другому.
03.04.2010