watanabe> エスケープとか全部含めて encode する必要があります. でした。いま気が付いて返事を書こうとしたところ。 残念、先を越された、、、^^; 「厳密」には encode される文字列の前後には 半角space が無ければ ならない とか MIME encode はうるさくて、かつ実情と合わない点が ありその部分は困ったな、ですが、実情に合わせた形で実害は(あまり) なさそうなのでこれでつくってしまいます。 特に全角の前後を " で囲むと、中の encode はescapeされるのか 否か、と言う問題が、あるのですが、「escapeされない、この部分は " で囲まれているかいないかに関わらず、全角部分だけencodeする。 でお茶を濁して、 require "kconv" class String def decode64 #(str) Kconv::tojis(self) end def encode64 str = Kconv::tojis(self) str.gsub!(/(\e\$B[^\e]+\e\(B)/) { "=?ISO-2022-JP?B?" + [$1].pack("m").chop + "?=" } str end end ---------- >最長一致も使えるので > str.gsub!(/(\e\$B.+?\e\(B)/) { 最短一致ですよね ^^ こういう時の +? の文法になれていないのですが、 「+? 直前の表現の1回以上の繰り返し(最短一致) 」 というのは、「 .+? の最短一致」 ではなく、それを囲む \e\$B.+?\e\(B 全体の 最短一致ですか? その影響範囲は、/ / 全体? それとも 今回の様に ( ) の 中にある時は ( ) 内までですか?