This sounds like an almost perfect case for Encode::Repair, just released by moritz.
In reply to Re: doulbe/triple/multi encoded utf8 by Corion in thread doulbe/triple/multi encoded utf8 by fert