nkf でbase64 エンコード,デコードしたら結果が違う?

小さなバイナリを受け渡ししたいけれどファイル共有サービスとか使うのも面倒だしbase64 にしてgist に貼ってしまおうと思ったのですが,nkf コマンドでbase64 にエンコードして,確認のためデコードしてみたら違う結果に.

% cat original | nkf -MB > hoge
% cat hoge | nkf -mB > fuga
% diff original fuga           
バイナリーファイル original とfuga は異なります
% ls -l
-rw-r--r--  1 mk   mk       4080  5月 29 20:38 original
-rw-r--r--  1 mk   mk       5422  5月 29 20:52 hoge
-rw-r--r--  1 mk   mk       3999  5月 29 20:52 fuga

Google+ にこのことを書いたら
https://plus.google.com/u/0/103792214056489833385/posts/bbVzNS7RNTR 🏛️

Masakazu Takahashi 🏛️さんにコメントをいただきました.

試したところ、デコードのときに入力文字コードを明示的に指定する必要があるようです。

% nkf -mBW hoge > fuga

そんなこんなで、base64のエンコード/デコードだけなら、base64コマンドのほうが確実かも。

ということで,base64 コマンドならGNU Coreutils に含まれているので大抵の環境で使えるしってことでbase64 コマンドで貼り付けました.

% cat jl-bct.bct | xz | base64 | gist-paste

ついでに復元はこんな感じで

% wget -O – https://gist.github.com/matoken/b2041569865a82895082/raw/53b85e9333e3b837d24714a8e529dde69ec788e9/jl-bct.bct.xz.base64 🏛️ | base64 -d | xzcat > jl-bct.bct

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

To respond on your own website, enter the URL of your response which should contain a link to this post's permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post's URL again. (Find out more about Webmentions.)