NAME

MIME::EcoEncode - MIME Encoding (Economical)

SYNOPSIS

use MIME::EcoEncode;
$encoded = mime_eco($str, 'UTF-8');        # encode utf8 string
$encoded = mime_eco($str, 'UTF-8?B');      # ditto ("B" encoding)
$encoded = mime_eco($str, 'UTF-8?Q');      # ditto ("Q" encoding)
$encoded = mime_eco($str, 'UTF-8*XX');     # XX is RFC2231's language
$encoded = mime_eco($str, 'UTF-8*XX?B');   # ditto ("B" encoding)
$encoded = mime_eco($str, 'UTF-8*XX?Q');   # ditto ("Q" encoding)
$encoded = mime_eco($str, 'GB2312');       # encode euc-cn string
$encoded = mime_eco($str, 'EUC-KR');       # encode euc-kr string
$encoded = mime_eco($str, 'Big5');         # encode big5 string
$encoded = mime_eco($str, 'Shift_JIS');    # encode cp932 string
$encoded = mime_eco($str, 'ISO-2022-JP');  # encode 7bit-jis string
$encoded = mime_eco($str, $sbcs);          # $sbcs :
                                           #   single-byte charset
                                           #     (e.g. 'ISO-8859-1')

$decoded = mime_deco($encoded);            # decode encoded string
                                           #   (for single charset)

($decoded, $charset, $language)            # return array
         = mime_deco($encoded);            #   (for single charset)

use Encode;
$decoded = mime_deco($encoded, \&cb);      # cb is callback subroutine
                                           #   (for multiple charsets)

# Example of callback subroutine
sub cb {
  my ($encoded_word, $charset, $language, $decoded_word) = @_;
  encode_utf8(decode($charset, $decoded_word));
}

DESCRIPTION

This module implements RFC 2047 Mime Header Encoding.

Options

$encoded = mime_eco($str, $charset, $lf, $bpl, $mode, $lss);
             # $charset : 'UTF-8' / 'UTF-8?Q' / 'UTF-8*XX' /
             #            'GB2312' / 'EUC-KR' / 'Big5' /
             #            'Shift_JIS' / 'ISO-2022-JP' / ...
             #            (default: 'UTF-8')
             #              Note: "B" encoding is all defaults.
             #                    The others are all encoded as
             #                    single-byte string.
             # $lf      : line feed (default: "\n")
             # $bpl     : bytes per line (default: 76)
             # $mode    : 0 : unstructured header (e.g. Subject)
             #            1 : structured header (e.g. To, Cc, From)
             #            2 : auto (Subject or Comments ? 0 : 1)
             #            (default: 2)
             # $lss     : length of security space (default: 25)

Examples

Ex1 - normal (structured header)

use MIME::EcoEncode;
my $str = "From: Sakura <sakura\@example.jp> (\xe6\xa1\x9c)\n";
print mime_eco($str);

Ex1's output:

From: Sakura <sakura@example.jp> (=?UTF-8?B?5qGc?=)

Ex2 - "Q" encoding + RFC2231's language

use MIME::EcoEncode;
my $str = "From: Sakura <sakura\@example.jp> (\xe6\xa1\x9c)\n";
print mime_eco($str, 'UTF-8*ja-JP?Q');

Ex2's output:

From: Sakura <sakura@example.jp> (=?UTF-8*ja-JP?Q?=E6=A1=9C?=)

Ex3 - continuous spaces

use MIME::EcoEncode;
my $str = "From: Sakura  <sakura\@example.jp>    (\xe6\xa1\x9c)\n";
print mime_eco($str);

Ex3's output:

From: Sakura  <sakura@example.jp>    (=?UTF-8?B?5qGc?=)

Ex4 - unstructured header (1)

use MIME::EcoEncode;
my $str = "Subject: Sakura (\xe6\xa1\x9c)\n";
print mime_eco($str);

Ex4's output:

Subject: Sakura =?UTF-8?B?KOahnCk=?=

Ex5 - unstructured header (2)

use MIME::EcoEncode;
my $str = "Subject: \xe6\xa1\x9c  Sakura\n";
print mime_eco($str);

Ex5's output:

Subject: =?UTF-8?B?5qGc?=  Sakura

Ex6 - 7bit-jis string

use Encode;
use MIME::EcoEncode;
my $str = "Subject: \xe6\xa1\x9c  Sakura\n";
print mime_eco(encode('7bit-jis', decode_utf8($str)), 'ISO-2022-JP');

Ex6's output:

Subject: =?ISO-2022-JP?B?GyRCOnkbKEI=?=  Sakura

SEE ALSO

MIME::EcoEncode::Param, MIME::EcoEncode::Fold

For more information, please visit http://www.nips.ac.jp/~murata/mimeeco/

AUTHOR

MURATA Yasuhisa <murata@nips.ac.jp>

COPYRIGHT

Copyright (C) 2011-2013 MURATA Yasuhisa

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.