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

ファイルの内容をUTF-8 としてperlデコードしようとすると発生します。しかし、ファイルには無効な UTF-8 が含まれているため、層を使用する代わりにdouble_fin.plPerlIO 層を使用してファイルを読み込む必要があります。:raw:encoding(utf8)

http://perldoc.perl.org/PerlIO.htmlも参照してください。

于 2015-07-24T19:33:44.120 に答える