[Perl] Encode::MIME::Header::ISO2022JPの復讐

こんばんは。
IT業界に勤めているのに、プログラムを書くのは自宅に帰ってからというおじいさんです。
まあ、そんなもん、というのが一般かも知れませんが。
それはさておき、昨日の続きではありません。
奇妙な動作を発見しました。


#!/usr/bin/perl

use strict;
use utf8;
use Encode;

my $str = q{"abc あいうえお" <aioue@hoge.com>, };
print Encode::encode('MIME-Header-ISO_2022_JP', $str);


結果

$ perl i.pl
"abc =?ISO-2022-JP?B?GyRCJCIkJCQmJCgkKhsoQiI=?= <aioue@hoge.com>,

閉じダブルクォートはどうした・・・(^-^;)


追記(2010/05/20)
コメント欄にあるように、RFC2047に従うと、3tokensに別れて、上記動作が正しいとの事です。
DANさん、指摘ありがとうございました。


#しかし、何年もメール関係をやってんのに、RFCは分からない所ありますね。
#ほんと、ご迷惑をおかけしました。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

DANKOGAI
2010年05月19日 23:55
メンテナーです。
"abc あいうえお" ,
は、RFC2047的には
"abc
あいうえお"
,
の3 tokensに分かれることになっているので、奇妙に見えてもこれでOKなのです。
ちなみにperl以外でもこれがきちんとdecodeできることも確認しております。

Dan the Maintainer Thereof
2010年05月20日 00:36
まさかメンテナの方にコメント頂けるとは思っておりませんでした。
RFC2047に関連する箇所は存じておらず、指摘ありがとうございます。
確認してみると、確かに3tokensに別れて、この動作が正しいですね。びっくり。

ありがとうございました。

この記事へのトラックバック