если обе базы данных являются PG, то вы можете экспортировать и импортировать всю базу данных, используя параметры pg_dump, чтобы изменить кодировку ... это, вероятно, самый эффективный способ сделать это
если вы делаете это с помощью грабли, вы можете выполнить транскодирование внутри грабли ... это означает, что вам придется прикоснуться к каждому атрибуту и перекодировать его ...
как кажется, ваша новая база данных - utf8, тогда как старая - latin1
Вы можете сделать это, кодируя каждое строковое / текстовое / текстоподобное значение, используя ... проверка для response_to? (: Encoding) гарантирует, что данные кодируются, только если к ним прикреплена некоторая информация о кодировании, т.е. е. числовые значения не будут транскодироваться
def transcode(data, toEnc = 'utf8')
if data.respond_to?(:encoding) && data.encoding.name != toEnc
return data.dup.force_encoding toEnc
end
data
end
теперь вы можете просто прочитать запись из старой базы данных, запустить ее с помощью этого метода и затем записать ее в новую базу данных
u = OldDBUser.first
u.attribute_names.each { |x|
u[x.to_sym] = transcode u[x.to_sym]
}
#... whatever you do with the transcoded u
... ну, я не проверял их, но, пожалуйста, сделайте, может быть, это все, что вам нужно