あおきです。

  In mail "[ruby-list:31788] Re: MIME decoding"
    Koji Arai <JCA02266 / nifty.ne.jp> wrote:

> 新井です。

> > メールの Subject: を euc-jp 変換する (MIME decoding) のに 
> > NKF::nkf('-e', subject) を使ったところ,
> > 
> > 「=?ISO-2022-JP?B?GyRCRnxLXDhsGyhC?= english」が「日本語english」
> > とスペースが抜けてしまいました。

> 思い付くままに base64.rb を書き換えてみました。深い事は考え
> てませんが、詳しい人がより良いライブラリにしてくれることを期
> 待しますです。

  * エンコードワード間の空白は消す
  * それ以外の空白は(改行も含めて)保存
  * メールで使うには Q もいっしょにデコードしてくれるほうが便利

というのを考えて、添付したもの程度でよいと思います。どっちにしろ
ヘッダのデコードは他にもいろいろあるんで「Base64」モジュールには
おさまらないでしょう。

もっともこのモジュールも MIME decode と言うにはあまりにカバーする
範囲が狭すぎますねえ。
-------------------------------------------------------------------
青木峰郎

require 'nkf' module MIMEdecode module_function encoded = '=\?(?:iso-2022-jp|euc-jp|shift_jis)\?[QB]\?[a-z0-9+/=]+\?=' ENCODED_WORDS = /#{encoded}(?:\s+#{encoded})*/i OPT = { 'E' => '-e', 'S' => '-s', 'N' => '-e', 'U' => '-e' } def decode( str ) str.gsub( ENCODED_WORDS ) {|s| NKF.nkf( OPT[$KCODE[0,1]], s ) } end alias mime_decode decode end