С Ruby 1.9 это особенно легко, потому что все строки имеют свою кодировку:
# coding: UTF-8
u = 'µ'
Как видите, строка кодируется как UTF-8:
p u.encoding # => #<Encoding:UTF-8>
p u.bytes.to_a # => [194, 181]
Перекодировать строку довольно просто:
i = u.encode('ISO-8859-1')
i
теперь в кодировке ISO-8859-1:
p i.encoding # => #<Encoding:ISO8859-1>
p i.bytes.to_a # => [181]
Если вы хотите записать в файл,сеть, поток ввода-вывода или консоль, это становится еще проще.В Ruby 1.9 эти объекты помечены кодировкой, как строки, и перекодирование происходит автоматически.Просто скажите print
или puts
и Ruby сделает для вас транскодирование:
File.open('test.txt', 'w', encoding: 'ISO-8859-1') do |f|
f.puts u
end