Well, if vim says the file is encoded in latin1, I believe that. Try to use Encode to or open my $handle, '<:encoding(ISO-8859-1)', $file to decode it, and then re-encode it as utf-8. It also explains why cat'ting the file doesn't display the file names correctly.
See my reply on your original question for more details on de- and encoding.