# File mconv.rb, line 100 def Mconv.conv(str, to, from) ic = Iconv.new(to, from) result = '' rest = str begin result << ic.iconv(rest) rescue Iconv::Failure result << $!.success rest = $!.failed # following processing should be customizable by block? result << '?' rest = rest[1..-1] retry end result << ic.close result end