発火後忘失

FIRE AND FORGET

MacのZipがWinで文字化けすることによって助かっている面もある

これらのリンク先では、Macの標準機能でZip圧縮した日本語名ファイルをWindowsで展開すると文字化けしてしまう、ということが書かれています。
また、理由として、 UTF-8 エンコーディングされたファイル名を CP932 とみなして処理しているからだ、という原因も書かれています。

では、例えばファイル名のエンコーディングを手動で指定できるようになれば、文字化けせずに展開できるので問題は全て無くなるのか、というとそういうわけでもない、という話です。

実際に試してみます。
JavaではZipファイルを扱うAPIがあり、デフォルトではファイル名を UTF-8 であるとみなして処理します。
このAPIを利用して次のようなプログラムを書きました。

続いて、Macの標準機能でファイルをZip圧縮しWindowsへ持ってきて上記プログラムで展開したファイルと、Windowsで作成した同名ファイルを並べたものが次のキャプチャです。
Windows7の、エクスプローラ上の表示とコマンドプロンプト上の表示です。

f:id:yukihaned:20170423164241j:plain

エクスプローラ上では、同名のようにみえるファイルが2つ並んで存在しています。通常では同名ファイルを同じディレクトリに入れることはできません。
コマンドプロンプト上では、一方は濁音の濁点が分離して表示されています。他方は通常どおりの表示です。

つまり、現状文字化けすることで異なっているものだと認識できていますが、これが正常に表示されるようになると、人間が見て判別不能な差異になってしまう、ということです。
いわゆる UTF-8-MAC 問題です。