0

很抱歉我的菜鸟的问题,但我不能让下一个脚本工作。这是一种有用的代码和平,但我没有在网络中找到类似的工作。

use Encode;
use Encode::Guess;

open (my $fhr, "<", "$folder\\$_")
  or die "Could not open file '$folder\\$_' $!";
my $data = do { local $/; <$fhr> };
close $fhr;

# It is either cp1251 or utf-8.
my  $enc = guess_encoding ($data, qw/cp1251/ );
ref($enc) or die "Can't guess: ".$enc->name();
print "Encode = ".$enc->name()."\n";

my $decoded = decode ($enc, $data);

控制台输出如下:

utf8 "\xCE" does not map to Unicode at double_fin.pl line 167, <$fhr> chunk 1.
Encode = utf8
Cannot decode string with wide characters at C:/Dwimperl/perl/lib/Encode.pm line 176.

我做错了什么?先感谢您。

4

1 回答 1

1

第一条消息

utf8 "\xCE" does not map to Unicode at double_fin.pl line 167, <$fhr> chunk 1

perl尝试将文件的内容解码double_fin.pl为 UTF-8 时出现。但是该文件包含无效的 UTF-8,因此您需要使用 PerlIO 层:raw而不是使用该:encoding(utf8)层来读取文件。

另请参见http://perldoc.perl.org/PerlIO.html

于 2015-07-24T19:33:44.120 回答