I guess I don't completely understand. Marshal tries to sniff out the content and figure out the character set that's being used. Is there a way for it to tell the difference between ISO-2022-JP and utf-8? If so, I'm happy saying that the charset is ISO-2022-JP when it is. The user just has to feed the input through a converter before marshal sees it.