Mini Shell
#-*- perl -*-
#-*- encoding: utf-8 -*-
package MIME::Charset::UTF;
use strict;
use Carp qw(croak);
use Encode::Encoding;
use vars qw(@ISA $VERSION);
@ISA = qw(Encode::Encoding);
$VERSION = '1.010';
__PACKAGE__->Define('x-utf16auto');
__PACKAGE__->Define('x-utf32auto');
sub perlio_ok { 0 }
sub decode {
my ($self, $octets, $check) = @_;
if ($self->name =~ /16/) {
if ($octets =~ /\A\xFE\xFF/ or $octets =~ /\A\xFF\xFE/) {
return Encode::find_encoding('UTF-16')->decode($_[1], $_[2]);
} else {
return Encode::find_encoding('UTF-16BE')->decode($_[1], $_[2]);
}
} elsif ($self->name =~ /32/) {
if ($octets =~ /\A\0\0\xFE\xFF/ or $octets =~ /\A\xFF\xFE\0\0/) {
return Encode::find_encoding('UTF-32')->decode($_[1], $_[2]);
} else {
return Encode::find_encoding('UTF-32BE')->decode($_[1], $_[2]);
}
} else {
croak 'bug in logic. Ask developer';
}
}
sub encode {
my $self = $_[0];
if ($self->name =~ /16/) {
return Encode::find_encoding('UTF-16')->encode($_[1], $_[2]);
} elsif ($self->name =~ /32/) {
return Encode::find_encoding('UTF-32')->encode($_[1], $_[2]);
} else {
croak 'bug in logic. Ask developer';
}
}
Zerion Mini Shell 1.0