在 perl 中猜测文本文件代码页的模式代码?
Pattern code to guess the textfile codepage in perl?
很抱歉我的菜鸟问题,但我不能让下一个脚本工作。
这是一个有用的和平代码,但我没有在 net 中找到类似的工作代码。
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.
我做错了什么?
提前谢谢你。
第一条消息
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)
层来读入文件。
很抱歉我的菜鸟问题,但我不能让下一个脚本工作。 这是一个有用的和平代码,但我没有在 net 中找到类似的工作代码。
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.
我做错了什么? 提前谢谢你。
第一条消息
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)
层来读入文件。