perl 中有没有办法确定字符串utf-8
的cp1252
编码是哪一个?
问问题
2024 次
2 回答
1
核心Encode::Guess应该能胜任这个任务†
use Encode::Guess;
my $enc = guess_encoding($data, qw(cp1252)); # utf8 among defaults
接着
ref($enc) or die "Can't guess: $enc"; # trap error this way $utf8 = $enc->decode($data);
(来自文档)。
为了不使用默认的“ ascii, utf8 and UTF-16/32 with BOM ”,先改变一下
Encode::Guess->set_suspects(qw(utf8 cp1252));
然后获取编码
my $enc = guess_encoding($data);
或者,从文档中复制
my $decoder = Encode::Guess->guess($data); die $decoder unless ref($decoder); my $utf8 = $decoder->decode($data);
有关详细信息,请参阅文档。
于 2017-12-12T05:23:25.120 回答
1
my $could_be_utf8 = utf8::decode( my $tmp = $string );
my $could_be_cp1252 = $string !~ /[\x81\x8D\x8F\x90\x9D]/;
如果您需要处理同时包含两者的字符串,请参阅修复包含 UTF-8 和 Windows-1252 的文件。
于 2017-12-12T15:16:18.740 回答