Эй, я написал небольшое сообщение в блоге о том, что я сделал, но это немного более многословно, чем то, что уже было опубликовано. По какой-то причине я не смог заставить эти решения работать, и это сработало.
Суть в том, что я просто заменяю (или в моем случае удаляю) недействительные / неопределенные символы в моем файле, а затем переписываю его. Я использовал этот метод для преобразования файлов:
def convert_to_utf8_encoding(original_file)
original_string = original_file.read
final_string = original_string.encode(invalid: :replace, undef: :replace, replace: '') #If you'd rather invalid characters be replaced with something else, do so here.
final_file = Tempfile.new('import') #No need to save a real File
final_file.write(final_string)
final_file.close #Don't forget me
final_file
end
Надеюсь, это поможет.
Редактировать: здесь не указывается кодировка назначения, потому что кодирование предполагает, что вы кодируете кодировку по умолчанию, которая для большинства приложений Rails - UTF-8 (я полагаю)