2017-02-25 2 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에서 특정 인코딩을 사용하려면 생성자에서이 인코딩을 지정해야합니다.

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

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

+0

가 대단히 감사합니다 :

당신은 4 인수 생성자를 사용할 수 있어야합니다! – aaa

관련 문제