DotNetZip(Ionic Zip Library)を使用したのは、.NET Framework 4.5からZip圧縮のライブラリが追加されているが、追加でインストールせず、Windows 7も含めて対応してほしいと要求があったため。
-----------
ZIPファイルに格納するファイル名には文字コードの概念がない。
そのため、圧縮・解凍する際にファイル名のエンコーディングを指定する必要がある。
その際、日本では一般にSHIFT-JISが指定される。
Unicodeに未対応のツールの場合、Unicode文字をSHIFT-JISとみなして処理するため、解凍できなかったり、ファイル名が文字化けしたりする。
Windowsの標準ExplorerがUnicode ZIPに正式に対応したのは、Windows 8以降。(Windows 7はHotfix適用)
.NET Framework 4.5のZipArichiveクラスはUnicodeに対応している。
-----------
暗号化はもっとひどい。Windows 10であっても標準エクスプローラで復号できるのはキー長が96bitであるZipCrypto(traditional PKWARE encryption)だけ。
参考
KB2704299Windows 7 または Windows Server 2008 R2 で .zip ファイルの解凍後にファイル名が破損しています。
https://support.microsoft.com/ja-jp/kb/2704299
DotNetZipでの圧縮について
https://social.msdn.microsoft.com/Forums/de-DE/c9a38d80-c649-4b19-9a55-3acde2094659/dotnetzip?forum=csharpgeneralja
0 件のコメント:
コメントを投稿