問題のコーディングは迷惑です。昨日は、会っ解決するために数時間を過ごしました。
DotNetZipは、このライブラリに自動的にパッケージ化されたフォルダを使用して、元のコードは次のようになります。
VAR dirを=新しいDirectoryInfo(@ "C:\ foo"という)。 (ZIPファイルZIP =新しいZIPファイル(Encoding.UTF8))を使用して 、{ VARエントリ= zip.AddDirectory(dir.FullName、dir.Name)を、 zip.Save(Path.Combine(パス、dir.Name + "の.zip")); }
通常のルックスは、それは7-ZIPで開かれ、成功裏にパッケージ化され、動作しているようですが、中国のフォルダの内部にも適切に表示されています。
あなたは7-ZIP手にパッケージのzip、エクスプローラでダブルクリックを使用している場合は、そのフォルダの内部を見ることができます。そして、これはコード生成ジップで、中国のフォルダに詰めた場合、その空白をダブルクリックします。問題ないようですが、私はすべてのPDGファイルをパックするので(ファイル形式の電子書籍は、検索一目を理解していない)、もともと直接uvzに接尾辞をZIP、あなたは、UnicornViewerの読みと呼ばれるソフトウェアを使用することができますし、このジップ付きコード生成は、後で名前を変更したがUnicornViewerでオープン故障を示唆し、開きます。
英語のフォルダが中国のフォルダではなく、することができ、それは可能性が高い「問題をコーディング。」しているように見えます
次のコードでのzip属性を表示します。
(ZIP = ZipFile.Read ZIPファイル( "foo.zip")))を使用して { たZipEntry ZIPでのforeach(エントリ) { IF(entry.IsDirectory) エントリのプロパティを表示するために、ここで{//追加ブレークポイント ブレーク; } } }
それは╩└╜τ╡┌╥╗╬」として表示されますが、「世界初の6回受賞趙Guorong本当のアルバム」など、FileNameプロパティが文字化けしている、AlternateEncodingのエントリはIBM437のように表示、7-zipファイルを詰め発見されました╗┴∙╣┌═⌡╒╘╣・╚┘╩╡╒╜╫¿╝¡」。
長い時間のためのデバッグ、多くの情報を確認し、最終的に私は理解し、結果の文字列GB2312 / GBKエンコーディングをデコードするIBM437ました。この点を理解し、コードを変更します。
VAR dirを=新しいDirectoryInfo(@ "C:\ foo"という)。 バイト[]バイト= Encoding.GetEncoding( "2312")GetBytesメソッド(dir.Name.ToCharArray())。 ストリングNEWNAME = Encoding.GetEncoding( "IBM437")のGetString(バイト)。 (ZIPファイルのzip =新しいZIPファイル(Encoding.UTF8))を使用して { zip.AlternateEncoding = Encoding.GetEncoding( "IBM437を"); VARエントリ= zip.AddDirectory(dir.FullName、NEWNAME)。 zip.Save(Path.Combine(パス、dir.Name + "の.zip")); }
テスト。
以前に遭遇した問題をコーディング、主に文字化けが通常の表示に変わり、今回は故意ハァッ、ハァッ、適切に動作するためには、「文字化け」を生成する必要があります。気に誰が、とにかく、それだけで動作します。