use strict;
use Encode qw(:fallbacks find_encoding);
-our $VERSION = do { my @r = (q$Revision: 1.4 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+our $VERSION = do { my @r = (q$Revision: 1.5 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
my $Canon = 'Guess';
our $DEBUG = 0;
my $class = shift;
my $obj = ref($class) ? $class : $Encode::Encoding{$Canon};
my $octet = shift;
+
+ # sanity check
+ return unless defined $octet and length $octet;
+
# cheat 0: utf8 flag;
Encode::is_utf8($octet) and return find_encoding('utf8');
# cheat 1: BOM
use Encode::Unicode;
my $BOM = unpack('n', $octet);
return find_encoding('UTF-16')
- if ($BOM == 0xFeFF or $BOM == 0xFFFe);
+ if (defined $BOM and ($BOM == 0xFeFF or $BOM == 0xFFFe));
$BOM = unpack('N', $octet);
return find_encoding('UTF-32')
- if ($BOM == 0xFeFF or $BOM == 0xFFFe0000);
+ if (defined $BOM and ($BOM == 0xFeFF or $BOM == 0xFFFe0000));
my %try = %{$obj->{Suspects}};
for my $c (@_){