[References] fml-help ML's Count: 02012, 02013, 02016.
[Usage]
use Mail::Message::Encode;
my $encode = new Mail::Message::Encode;
my $str_euc = $encode->convert( $s, 'euc-jp' );
my $str_euc = $encode->convert( $s, 'euc-jp', 'iso-2022-jp' );
my $encode = new Mail::Message::Encode;
my $status = $encode->convert_str_ref( \$s, 'euc-jp' );
my $status = $encode->convert_str_ref( \$s, 'euc-jp', 'jis' );
my $fp = sub { ... };
$encode->run_in_chcode( $fp, $oout, $in );
* If you want to use 4.0 compatible functions,
ues Mail::Message::Encode qw(STR2EUC);
my $euc_s = STR2EUC( $s );The main code is within _convert_str_ref() method.
sub convert # if the argument is STR.
{
my ($self, $str, $out_code, $in_code) = @_;
_convert_str_ref(\$str, $out, $in);
return $str;
}
sub convert_str_ref # if the argument is STR_REF.
{
my ($self, $str, $out, $in) = @_;
_convert_str_ref($str, $out, $in);
}
sub _convert_str_ref # if the argument is STR_REF.
{
my ($str, $out, $in) = @_;
# 1. speculate charset
if $in unspecified -> speculat -> fail -> return 0
# 2. try conversion
if ($in resolved or or $in specified in @_) {
converted to $out charset
(use jcode, Jcode, use Encode if perl version > 5.8).
conversion
return 1 ; # success
}
else { # principle of least surprise ?
nothing todo ;
return $str;
}
return 0 ; # failed
}
sub base64 {}
sub quoted_printable {}
is implemented for convenience.
$x = $encode->base64($s);For backward compatibility, STR2XXX() functoins are prepared, too.
STR2EUC( $str, [$icode] ) STR2JIS( $str, [$icode] ) STR2SJIS( $str, [$icode] )These wraps convert_str_ref().
Copyright (C) 1993-2025 Ken'ichi Fukamachi mail:< fukachan at fml.org >