def hack_encoding str, extra = nil
encodings = [
extra,
Encoding::ISO_8859_1,
Encoding::UTF_8,
Encoding::ISO_8859_2,
Encoding::ISO_8859_9,
Encoding::SHIFT_JIS,
Encoding::WINDOWS_1252,
Encoding::EUC_JP,
].compact
encodings.each do |enc|
begin
str.force_encoding enc
if str.valid_encoding? then
str.encode! Encoding::UTF_8
break
end
rescue Encoding::InvalidByteSequenceError
rescue Encoding::UndefinedConversionError
end
end
raise "Bad encoding. Need a magic encoding comment." unless
str.encoding.name == "UTF-8"
end