成瀬です。

しん wrote:
> mime mail  での base64 encodeing は、body 部分と、header では
> お作法が異ります。
> なので、命名しなおすなら、「body用ではないよ、header用だよ」
> と明示した方がよいかな、と思ったのです。
> 
> base でなくBにしたのも同じような意味あいで、
> body では
>    Content-Transfer-Encoding: base64
> と、base64 ですが、headerの作法では
>    =?ISO-2022-JP?B?
> と、B です。

RFC2047には、
“The "B" encoding is identical to the "BASE64" encoding”
とあるので、B64 でなく B の方がいいと思います。

さておき、str = "テスト test" をいわゆる「BASE64」したとき、
期待される変換結果はおそらく二種類あります。

一つはただ変換しただけの "GyRCJUYlOSVIGyhC\n"。
もう一つは encoded-word にした "=ISO-2022-JP?B?GyRCJUYlOSVIGyhC?="。
変換結果がどちらなのか明確なメソッド名であるべきかと。

encode_base64, decode_base64 は前者には適切だと思いますが、
後者で用いるのは直感的でないように感じます。
encoding を指定できるならば、charset も指定できてよさそうですし。

> これを使う人は、header用だってことは自明だよ、なのかなぁ。

header 用でなければ Array#pack('m') を使うはずですが、
混同は避けられた方がいいかと。

なお、他の言語では、
Perl/Jcodeの場合
http://openlab.jp/Jcode/Nihongo.html#item_mime_encode
mime_encode で ISO-2022-JP、MIME_Header で UTF-8。

Pythonの場合は指定の仕方が異なる
http://www.python.jp/doc/release/lib/module-email.Header.html
という感じでしょうか。

Jcode.pmにあわせるならば、
mime_encode / mime_decode は無難かもしれません。
"header"という文字列はありませんが、
body用だと思う可能性は少ないでしょうし、
将来の名前空間を食ってしまうこともなさそうです。

-- 
NARUSE, Yui  <naruse / airemix.com>
DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA