11

通常、解凍するファイルにはドイツ語の文字が含まれているため、解凍機能を使用System.Text.Encodingして、解凍されるファイルが解凍後に同じ名前を保持するようにしています。または
のようなさまざまなことを試しましたが、何も 変換されないか、デフォルトの場合はブラックボックスです:/Encoding.DefaultEncoding.UTF8äÄéöÖüß.txt„Ž‚”™á.txt

助言がありますか?

using (ZipArchive archive = System.IO.Compression.ZipFile.Open(ZipFile, ZipArchiveMode.Read, System.Text.Encoding.Default))
{

    foreach (ZipArchiveEntry entry in archive.Entries)
    {
        string fullPath = Path.Combine(appPath, entry.FullName);
        if (String.IsNullOrEmpty(entry.Name))
        {
            Directory.CreateDirectory(fullPath);
        }
        else
        {
            if (!entry.Name.Equals("Updater.exe"))
            {
                entry.ExtractToFile(fullPath,true);

            }
        }
    }
}
4

3 に答える 3

12

CodePage 850 を試してください (私はうまくいきました):

using (ZipArchive archive = System.IO.Compression.ZipFile.Open(ZipFile, ZipArchiveMode.Read,  System.Text.Encoding.GetEncoding(850)))
{
      // ....

次のコメントは、Sharpziplib の (古いバージョンの) からのもので、私を正しい方向に導きました。

    /* Using the codepage 1252 doesn't solve the 8bit ASCII problem :/
       any help would be appreciated.

      // get encoding for latin characters (like ö, ü, ß or ô)
      static Encoding ecp1252 = Encoding.GetEncoding(1252);
    */

    // private static Encoding _encoding = System.Text.ASCIIEncoding;
    private static Encoding _encoding = System.Text.Encoding.GetEncoding(850);

最後の行は、特殊文字を含む zip ファイルを正しく読み取れるようにするための変更です。

于 2013-11-15T09:26:10.177 に答える