厄介なエンコーディングの問題

問題のコーディングは迷惑です。昨日は、会っ解決するために数時間を過ごしました。

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")); 
                    }

テスト。

以前に遭遇した問題をコーディング、主に文字化けが通常の表示に変わり、今回は故意ハァッ、ハァッ、適切に動作するためには、「文字化け」を生成する必要があります。気に誰が、とにかく、それだけで動作します。

おすすめ

転載: www.cnblogs.com/badnumber/p/12128273.html