open my $fh, "<:raw:encoding(utf-16):crlf:utf8", $file
or die "$file: $!";
####
open my $fh, "<:raw:encoding(ucs-2le):crlf:utf8", $file
or die "$file: $!";
read($fh, my $bom='', 1);
####
use Encode qw( _utf8_on );
my $csv = Text::CSV_XS->new ({ binary => 1 });
# UTF-16 or UCS-2 file with BOM and CRLF or LF line endings.
open my $fh, "<:raw:encoding(utf-16):crlf:utf8", $file
or die "$file: $!";
while (my $row = $csv->getline ($fh)) {
# Fix inability of CSV_XS to handle UTF8 strings.
_utf8_on($_) for @$row;
print $row->[4];
}