No caso de você assumir que um arquivo está codificado em X, mas não tiver certeza e não se importar se alguns caracteres não puderem ser convertidos e se perderem, tente
def slurp(file_name, assumed_encoding, target_encoding)
file_mode = "rb:%s" % assumed_encoding
File.read(file_name, :mode => file_mode).encode(
target_encoding,
:undef => :replace,
:invalid => :replace,
:replace => "?"
).force_encoding(target_encoding)
end
slurp(file_name = "presumably_utf8.txt",
assumed_encoding="UTF-8",
target_encoding="UTF-8")