|
package SL::Iconv;
|
|
|
|
use Text::Iconv;
|
|
|
|
use SL::Common;
|
|
|
|
use vars qw(%converters);
|
|
|
|
use strict;
|
|
|
|
sub get_converter {
|
|
my ($from_charset, $to_charset) = @_;
|
|
|
|
my $index = "${from_charset}::${to_charset}";
|
|
if (!$converters{$index}) {
|
|
$converters{$index} = Text::Iconv->new($from_charset, $to_charset) || die;
|
|
}
|
|
|
|
return $converters{$index};
|
|
}
|
|
|
|
sub convert {
|
|
my ($from_charset, $to_charset, $text) = @_;
|
|
|
|
$from_charset ||= Common::DEFAULT_CHARSET;
|
|
$to_charset ||= Common::DEFAULT_CHARSET;
|
|
|
|
my $converter = get_converter($from_charset, $to_charset);
|
|
return $converter->convert($text);
|
|
}
|
|
|
|
1;
|
|
|