ZIPのUnicode対応 その2

「Info-ZIP Unicode Path Extra Field」に対応しているアーカイバが見当たらなかったので、昨日の方針を変更して、PKZIP方式を採用しました。
差分


さらにMac OS Xだと、PKZIP方式のフラグを立てずにUTF-8で格納するようで、ShiftJIS環境で展開するとファイル名が化けます。
UTF-8と他のマルチバイトエンコーディング(ShiftJISとは限らない)を自動判定するのは困難です。
ところが、ExplzhはOSXで作成したZIPを確実に認識するので、不思議に思って調べてみました。
バイナリエディタでフラグを弄りながら確認したところ、どうも作成元のOSがUNIX(0x03)だとUTF-8と見なしているようです。
今回はこの仕様もマネすることにしました。まぁ、逆にWinからMacへ持っていくと化けるんですけどね。


というわけで、読み出し処理まで実装できました。
差分
仕様上は決まっていませんが、wpath版ではInfo-ZIP方式のシンボリックリンクUTF-8で記録するようにしています。