2017-02-25 12 views
-2

Encoding.GetEncoding( "cp866")を実装するにはどうすればよいですか? アーカイブからのエクスポート中に、ロシアのシンボルが正しく表示されません。 System.IO.Compressionのよう特定のエンコーディングを使用してZipArchiveを読む

public static class ZipArchiveExtension 
{ 
    public static void ExtractToDirectory(this ZipArchive archive, string destinationDirectoryName, bool overwrite) 
    { 
     if (!overwrite) 
     { 
      archive.ExtractToDirectory(destinationDirectoryName); 
      return; 
     } 
     foreach (ZipArchiveEntry file in archive.Entries) 
     { 
      string completeFileName = Path.Combine(destinationDirectoryName, file.FullName); 
      if (file.Name == "") 
      { 
       Directory.CreateDirectory(Path.GetDirectoryName(completeFileName)); 
       continue; 
      } 
      file.ExtractToFile(completeFileName, true); 
     } 
    } 
} 

FileStream zipToOpen = new FileStream(zipPath, FileMode.Open); 
ZipArchive archive = new ZipArchive(zipToOpen); 
ZipArchiveExtension.ExtractToDirectory(archive, extractPath, true); 
zipToOpen.Dispose(); 

:ZipFile.ExtractToDirectory(zipPath、extractPath、Encoding.GetEncoding( "CP866"))。

答えて

1

特定のエンコーディングをZipArchiveで使用するには、コンストラクタで指定する必要があります。

あなたは4引数のコンストラクタを使用することができるはずです。

ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Read, false, Encoding.GetEncoding("cp866")); 

https://msdn.microsoft.com/en-us/library/hh875101(v=vs.110).aspx

+0

はどうもありがとうございました! – aaa

関連する問題