Ruby 1.9+ гораздо лучше подготовлен для работы с Unicode, чем 1.8.7, поэтому я настоятельно рекомендую работать под 1.9.2, если это возможно.
Отчасти проблема в том, что 1.8 не понимает, что символ UTF-8 или Unicode может иметь длину более одного байта. 1.9 понимает это и вводит такие вещи, как String # each_char.
require 'iconv'
# encoding: UTF-8
RUBY_VERSION # => "1.9.2"
"龅".encoding # => #<Encoding:UTF-8>
"龅".each_char.entries # => ["龅"]
Iconv.iconv("unicode","utf-8","龅").to_s # =>
# ~> -:8:in `iconv': invalid encoding ("unicode", "utf-8") (Iconv::InvalidEncoding)
# ~> from -:8:in `<main>'
Чтобы получить список доступных кодировок с Iconv, выполните:
require 'iconv'
puts Iconv.list
Это длинный список, поэтому я не буду добавлять его сюда.