コマンドラインでbase64する

通常ならば nkf -MBでいいのだが、バイナリデータのときには

       -M[BQ]
           MIME に変換する。 JIS にコード変換してから BASE64 される。
           -M  ヘッダ形式に変換する
           -MB base64 stream に変換する

とのことなのでJISコードにしてから変換している。

実験例

$ echo -n 隣の客はよく柿食う客だ| nkf -MB;echo
GyRCTlkkTjVSJE8kaCQvM0E/KSQmNVIkQ
$ echo -n 隣の客はよく柿食う客だ| nkf -j | base64
GyRCTlkkTjVSJE8kaCQvM0E/KSQmNVIkQA==
$ echo -n 隣の客はよく柿食う客だ| base64
6Zqj44Gu5a6i44Gv44KI44GP5p+/6aOf44GG5a6i44Gg
$ echo -n 隣の客はよく柿食う客だ| ruby -e 'puts [STDIN.read].pack("m")'
6Zqj44Gu5a6i44Gv44KI44GP5p+/6aOf44GG5a6i44Gg

おしい、nkfがメールを標準とするために開発されたのだろうが…

でも実を言うとbase64ってコマンド知らなかったりしたorz

ということでバイナリデータを操作するときにはnkf -MBでなくbase64にすること。