[#31787] MIME decoding — Tietew <tietew@...>

Tietew です。

24 messages 2001/10/08

[#31866] 先祖がえり — "T.Shirakawa" <niegh@...>

はじめまして つい最近、MLに登録した白川です。

20 messages 2001/10/14
[#31867] Re: 先祖がえり — Koji Arai <JCA02266@...> 2001/10/14

新井です。

[#31889] Ruby Conference — Minero Aoki <aamine@...>

あおきです。

31 messages 2001/10/16
[#31905] Re: Ruby Conference — matz@... (Yukihiro Matsumoto) 2001/10/17

まつもと ゆきひろです

[#31923] Re: Ruby Conference — TAKAHASHI Masayoshi <maki@...> 2001/10/17

高橋征義です。

[#31932] しぶらぐ — "KANEMITSU Masao" <masao-k@...> 2001/10/18

http://www.ne.jp/asahi/masao-k/home/newpage1.htm

[#31906] 数値の配列の一部を文字列にして、多重代入したい — みかみまさと <kofu@...>

こんにちは。みかみにございます。

9 messages 2001/10/17

[#32016] Re: コメント削除スクリプト — "Tatsuaki Nagai" <Tatsuaki_Nagai@...>

こんにちは。永井です。

15 messages 2001/10/24
[#32018] Re: コメント削除スクリプト — TASHIRO Katsuya <tashiro_katsuya@...> 2001/10/24

田代と申します.

[#32123] dRuby の DRbUndumped#_dump は? — FUJIMOTO Hisakuni <hisa@...>

こんにちは、藤本です。

21 messages 2001/10/30
[#32124] Re: dRuby の DRbUndumped#_dump は? — m_seki@... 2001/10/30

[#32126] Re: dRuby の DRbUndumped#_dump は? — shudo@... 2001/10/31

咳さん wrote:

[#32145] Test::Unit — MUTOH@...

むとうです。

20 messages 2001/10/31

[ruby-list:31788] Re: MIME decoding

From: Koji Arai <JCA02266@...>
Date: 2001-10-08 14:47:53 UTC
List: ruby-list #31788
新井です。

In message "[ruby-list:31787] MIME decoding"
  on 08 Oct 2001 22:48:14 +0900,
  Tietew <tietew@tietew.net> wrote:
> Tietew です。
> 
> メールの Subject: を euc-jp 変換する (MIME decoding) のに 
> NKF::nkf('-e', subject) を使ったところ,
> 
> 「日本語 english」が「日本語english」
> とスペースが抜けてしまいました。
> これでは格好悪いので考えた末
> 
> def mime_dec(str)
>   return nil unless str
>   str = str.tr("\0\1", "")
>   str.gsub!(/(\s*)\n/) { $1.empty? ? ' ' : $1 }
>   str = NKF::nkf('-em0', str)
>   str.gsub!(/=\?[\w\d\-]+\?[BQbq]\?.*?\?=/) { "\0" + NKF::nkf('-e', $&) + "\1" }
>   str.gsub!(/\001\s*\000/, "")
>   str.tr!("\0\1", "")
>   str
> end
> 
> なんてコードを書いたのですが,もっとエレガントな方法は無いもので
> しょうか(^^;
> 
> ちなみに,nkf 1.71 でも 1.92 でも同じ挙動を示すみたいです。

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

# gsub のブロックで nkf すると漢字が泣き別れたりするかな?

--
新井康司 (Koji Arai)



require 'nkf'

module Base64
  @@nkf_opt = '-m0 '
  case $KCODE[0]
  when ?e, ?E
    @@nkf_opt << '-e'
  when ?s, ?S
    @@nkf_opt << '-s'
  end

  module_function

  def decode64(str)
    str.unpack("m")[0]
  end

  def decode_b(str)
    str = str.gsub(/=\?ISO-2022-JP\?B\?([!->@-~]+)\?=/i) {
      NKF.nkf('-J ' + @@nkf_opt, decode64($1))
    }

    str.gsub!(/=\?SHIFT_JIS\?B\?([!->@-~]+)\?=/i) {
      NKF.nkf('-S ' + @@nkf_opt, decode64($1))
    }

    str.gsub!(/\n/, ' ') 
    str.gsub!(/\0/, '')
    str
  end

  def encode64(bin)
    [bin].pack("m")
  end

#   def b64encode(bin, len = 60)
#     encode64(bin).scan(/.{1,#{len}}/o) do
#       print $&, "\n"
#     end
#   end 
end

if __FILE__ == $0
  puts Base64.decode_b("日本語 english")
end

In This Thread