System.IO.ZipArchive zipped only UTF-8 encoding | Microsoft Connect
このフィードバックが「修正済み」としてクローズされたんですが、Betaで検証したらまったく変わってないので、方針を変えてZipのエントリーに任意のエンコーディングで追加できるようにCreateEntryにbyte配列のオーバーロードを追加してほしいというフィードバックに変更しました。
ZipArchive.CreateEntry にbyte配列をとるオーバーロードを追加してほしい | Microsoft Connect
ちなみにWindows 8 CPでもZipが扱える仕様は変わっていません。もうこの仕様はWindowsで変わらないように思います。あ、Windowsにもフィードバック出そう。
「新しいテキストドキュメント.txt」をexplorerで圧縮した例。
ZipArchiveクラスで「新しいテキストドキュメント.txt」を圧縮したファイルをExplorerでみた例。もうほんとにこのフィードバックを通さないとZipArchiveクラスが使えないので、なんとかしたい…。
(追記)
twitterでコメントをいただいたので。私もbyteがいいとは思っていません。一番いいのはEncodingの指定ができることなんですが、前回のフィードバックで「zipのメタデータにはエンコーディングがないから」というコメントを受けたので、「じゃあ使用者の責任でbyteからエンコーディングするからその方法提供してほしい」ということです。でもZipArchiveEntryクラスと整合性取れなくなるんで、うーんってところでもあるんですが。
@kkamegawa これって、単に Encoding 渡すオーバーロード追加してくれで良い気もしますし、CreateEntry 以外の部分も対応が必要では。というか、そもそも前のフィードバックってベータに反映されたんでしたっけ。
2012-03-25 00:06:54 via みについ to @kkamegawa
@kkamegawa なるほど。現象を説明するときに、ファイル名を全角英数にすると、わかりやすい(テストしやすい)かもしれません。あと、ZipArchiveEntry でもエンコーディングに対応する必要がありませんか?
2012-03-25 00:16:21 via みについ to @kkamegawa
@yfakariya 最初はZipArchiveEntryにエンコーディングをサポートしてくれと書こうとしたのですが、うーん確かにZipArchiveEntryクラスにもエンコーディング情報がないとだめか。
2012-03-25 00:22:39 via Janetter to @yfakariya
@kkamegawa byte[] はユーザビリティ的に微妙ですし、前回のスレッドとの一貫性を持たせた方が説得力も高まるので、前回の議論と同じやり方を主張するのが良いかと思ってます。byte[] にしたのはなぜですか?
2012-03-25 00:24:40 via みについ to @kkamegawa
@yfakariya byte[]だと使用者の責任でエンコーディングを気にしなくてもいいかなぁと思ったのが最大の理由です。ユーザビリティ的にあれなのは承知で。もともとzipにエンコーディング情報を持たないという反論を受けた前回のコメントも含めて。
2012-03-25 00:25:57 via Janetter to @yfakariya