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

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

  • 投稿者: chiba
  • 2008/5/30 金曜日 2:58:51
  • perl

はてブのほうでちょろっと書いたんだけど、
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

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

はてなブックマーク - perl-mongers.orgのメール送信の記事にちとつっこみ

コメント:0

コメントフォーム
入力した情報を記憶する

トラックバック:0

この記事のトラックバック URL
https://blog.everqueue.com/chiba/2008/05/30/25/trackback/
トラックバックの送信元リスト
perl-mongers.orgのメール送信の記事にちとつっこみ - へぼい日記 より

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

検索
フィード
メタ情報

ページの上部に戻る