日記+コメント付きブックマーク+他人にも役に立つかもしれない情報など。
(更新情報: RSS(ツッコミ付き) / RSS(ツッコミ抜き) / LIRS)
- p (01/03)
- Thiramil (10/26)
- 久々にいまむらを食べたい通りすがり (09/28)
- Fluxadir (05/16)
- Antiprestin (11/08)
2006/12/15
_ [Perl] EncodeモジュールでのMIME Encode
Encodeモジュールで文字コードの変換ができるが、MIMEエンコードをするには以下のようにすればよい。
use Encode; encode('MIME-Header-ISO_2022_JP', $subject)
[EncodeモジュールでのMIME Encodeより引用]
そうだったノカー
C:\> perl -MEncode -e "print encode('MIME-Header-ISO_2022_JP', decode('cp932', 'テスト'))"
=?ISO-2022-JP?B?GyRCJUYlOSVIGyhC?=
うん。
C:\> perl -MEncode -e "print encode('MIME-Header-ISO_2022_JP', decode('cp932', '主人がオオアリクイに殺されて1年が過ぎました。'))"
=?ISO-2022-JP?B?GyRCPGc/TSQsJSolKiUiJWolLyUkJEs7JiQ1JGwkRhsoQjE=?=
=?ISO-2022-JP?B?GyRCRy8kLDJhJC4kXiQ3JD8hIxsoQg==?=
長い文字列ならちゃんと2行に分割されるね。
C:\> perl -MEncode -e "print decode('MIME-Header-ISO_2022_JP', encode('MIME-Header-ISO_2022_JP', decode('cp932', '主人がオオアリクイに殺されて1年が過ぎました。')))"
MIME "B" unsupported at C:/Perl/lib/Encode.pm line 166
あれ、MIME decode はできんの? ああ、-ISO_2022_JP が余計なのか。
C:\> perl -MEncode -e "print decode('MIME-Header', encode('MIME-Header-ISO_2022_JP', decode('cp932', '主人がオオアリクイに殺されて1年が過ぎました。')))"
Wide character in print at -e line 1.
荳サ莠コ縺後が繧ェ繧「繝ェ繧ッ繧、縺ォ谿コ縺輔l縺ヲ1蟷エ縺碁℃縺弱∪縺励◆縲
おっと SJIS に戻すの忘れてた。
C:\> perl -MEncode -e "print encode('cp932', decode('MIME-Header', encode('MIME-Header-ISO_2022_JP', decode('cp932', '主人がオオアリクイに殺されて1年が過ぎました。'))))"
主人がオオアリクイに殺されて1年が過ぎました。
うん。
で、Linux では…
# perl -MEncode -e "print encode('MIME-Header-ISO_2022_JP', decode('euc-jp', 'テスト'))"
Unknown encoding 'MIME-Header-ISO_2022_JP' at -e line 1
Debian 3.1 の Perl 5.8.4 (Encode 1.99) には入ってないのか…orz
# locate Encode.pm | xargs head -3
#
# $Id: Encode.pm,v 1.99 2003/12/29 02:47:16 dankogai Exp dankogai $
#
それ古すぎじゃね?
とにかく現時点ではまだ幅広い環境で使えるとは言えないようですね。
すごいわかりやすかった。動いた。こんな簡単にできるとは。ありがとうございます。