You need to figure out the byte-order with UCS-2 and UTF-16. If there is no BOM, then Encode::Unicode can't figure it out. Windows is almost certainly little-endian, so try UTF-16LE. Also, "UCS-2" means "UCS-2BE" to Perl. That is probably the wrong byte order.