Home > perl > perl-mongers.orgのメール送信の記事にちとつっこみ

perl-mongers.orgのメール送信の記事にちとつっこみ

  • 2008-05-30 (金) 2:58
  • perl
  • hatena count

はてブのほうでちょろっと書いたんだけど、
Mail::Sendmail でメール送信の以下のコードについて。

use Encode;
use utf8;

my $subject = "テスト";
my $message = "テストです。ほげほげ。";

foreach my $str ( $subject, $message ) {
    utf8::encode($str);
    Encode::from_to( $str, "utf8", "iso-2022-jp" );
}

ここでutf8::encode => Encode::from_toするのは冗長

encode('iso-2022-jp', $str);

だけでおk。
use utf8してなければ(で、ソースの文字コードがutf8であれば)

Encode::from_to( $str, "utf8", "iso-2022-jp" );

だけでおk。
http://b.hatena.ne.jp/kamawada/20080530#bookmark-8776610

encode('iso-2022-jp', $str); しても結局メールを送るときにutf8フラグを落とさなきゃいけないので

といってますがそれは勘違いかと・・・。
EncodeのPODのencodeの説明のところにも

the UTF8 flag for $octets is always off

とかかれていますし。

以下確認コードでっす。

#!/usr//bin/perl
use strict;
use utf8;

use Encode;
use Devel::Peek;

my $str = 'あああいうえお';

print Dump($str);
print Dump(simple_encode($str));
print Dump(encode_from_to($str));

sub simple_encode {
    my $str = shift;

    return encode('iso-2022-jp', $str);
}

sub encode_from_to {
    my $str = shift;

    $str = encode('utf8', $str);
    Encode::from_to($str, 'utf8' => 'iso-2022-jp');
    return $str;
}

結果はこちら

SV = PV(0x8151b00) at 0x815160c
  REFCNT = 1
  FLAGS = (PADBUSY,PADMY,POK,pPOK,UTF8)
  PV = 0x81fefb0 "343201202343201202343201202343201204343201206343201210343201212"� [UTF8 "x{3042}x{3042}x{3042}x{3044}x{3046}x{3048}x{304a}"]
  CUR = 21
  LEN = 24
SV = PVMG(0x81e1fc8) at 0x8230ca0
  REFCNT = 1
  FLAGS = (TEMP,POK,pPOK)
  IV = 0
  NV = 0
  PV = 0x8236630 "33$B$\"$\"$\"$$$&$($*33(B"�
  CUR = 20
  LEN = 24
SV = PVMG(0x81e2028) at 0x8230ca0
  REFCNT = 1
  FLAGS = (TEMP,POK,pPOK)
  IV = 0
  NV = 0
  PV = 0x8236630 "33$B$\"$\"$\"$$$&$($*33(B"�
  CUR = 20
  LEN = 24

ま、まったくおなじものですねー。

Comments:2

ai ito 09-12-10 (木) 16:24

あい。
うえお。
かきくけこ。

伊藤 藍 09-12-10 (木) 16:31

sasisuseso.
たちつてと。
ハヒフヘホ。

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://www.geminium.com/chiba_blog/2008/05/30/25/trackback/
Listed below are links to weblogs that reference
perl-mongers.orgのメール送信の記事にちとつっこみ from へぼへぼCTO日記
add to hatena hatena.comment (8) add to del.icio.us (0) add to livedoor.clip (4) add to Yahoo!Bookmark (0) Total: 12

Home > perl > perl-mongers.orgのメール送信の記事にちとつっこみ

Search
Feeds
Meta

Return to page top