畠山さん
Marshal.load [1] の第 2 引数に、String オブジェクトの場合は
エンコーディングを UTF-8 にする (それ以外の場合は何もしない)、という
proc を渡すというのはどうでしょうか?
data = Marshal.load( source, ->( obj ) {
if obj.is_a? String
obj.force_encoding( "UTF-8" )
end
obj
} )
[1] http://www.ruby-doc.org/core-1.9.2/Marshal.html#method-c-load
--
信岡 ゆう (NOBUOKA Yu)