문제

사람들은 이러한 일을 만들 ZIP 아카이브는 윈집할 수 있는한 국제화(즉비 latin:키릴 문자,그리스어,중국어,당신은 그것을 이름)파일 이름입니다.

슬프게도 노력하고,압축을 풀고 같은 파일을 말썽을 일으키는 원인:유닉스의 압축을 풀을 만듭 쓰레기 이름의 파일과 디렉토리"처럼®£¤©¤¥èì".Java 고 그 항아리 명령을 비참하게 실패에 그러한다.

이 무난하는 방법을 확장자를 가지고 파일을 프로그래밍 방식으로?유닉스는 Java.

도움이 되었습니까?

해결책 2

내가 찾은 솔루션 : Apache Commons-compress는 올바른 폴백 숯불로 제공되면 그러한 아카이브를 잘 압축 할 수 있습니다.

다른 팁

DotNetZip 을 지원하는 유니코드 임의 파일명 인코딩에 zipfiles,중 읽거나 쓰기 위해 지퍼로 잠급니다.

다.NET 라이브러리입니다.Unix 사용해야 합 모노로 사전 필수입니다.

는 경우 zip 파일을 올바르게 구성하여 윈집,에서 다른 말로하면 그것의 준수 zip 사양서 PKWare, 다음 없는 특별한 작업을 할 필요가 지정하는 인코딩 시간에 당신에 압축을 푼다.에 따라 지 spec,두 가지 지원되는 인코딩을 사용해 파일명에서 zipfiles:UTF-8IBM437.의 사용이나 이러한 인코딩은 지정된 우편에는 메타데이터와 어떤 지퍼 라이브러리 검출하고 그것을 사용할 수 있습니다.DotNetZip 자동으로 감지 할 때 그것을 읽고 준수입니다.다음과 같다:

using (var zip = ZipFile.Read("thearchive.zip"))
{
    foreach (var e in zip) 
    {
        // e.FileName refers to the name on the entry
        e.Extract("extract-directory");
    }
} 

거기에 아카이브 프로그램을 생산하는 지퍼로 잠그는"비준수"w.r.t.인코딩이 있습니다.WinRar 중 하나입니다-그것은 만들기에 지퍼가 있는 파일명 인코딩에서 인코딩 기본서에 사용하는 컴퓨터입니다.상하이에서 사용 cp950 하는 동안,아이슬란드에있는 다른 뭔가를,그리고 리스본에서 다른 무언가이다.이점을"비정 준수"여기서는 윈도우 탐색기에 열리고 올바르게 표시 i18n-화된 파일 이름에서 같은 지퍼로 잠급니다.다시 말해서,"비정 준수는"종종 사람들이 원하는 것이기 때문에,윈도우지(아직?) 지원 UTF-8zip 파일이 있습니다.

(이 모든 할 수 있으로 인코딩에 사용된 zip 파일이지,인코딩에서 사용되는 파일에 포함된 zip 파일)

Zip 스펙을 허용하지 않는 한 사양은 임의의 텍스트에서 인코딩을 지퍼 메타데이터가 포함되어 있습니다.다시 말해서 사용하는 경우 cp950 를 만들 때에는 지퍼,다음의 추출 논리를 필요가"알고있다"사용 cp950 추출할 때 아무것은 zip 파일을 전달하는 정보입니다.또한,당연히,지퍼 라이브러리를 사용하여 프로그래밍 방식으로 추출을 지원해야 합 임의 인코딩.내가 알기로,자바의 지퍼 라이브러하지 않습니다.DotNetZip 않습니다.그래서 다음과 같:

using (ZipFile zip = ZipFile.Read(zipToExtract,
                                  System.Text.Encoding.GetEncoding(950)))
{
  foreach (ZipEntry e in zip)
  {
     e.Extract(extractDirectory);
  }
} 

DotNetZip 을 만들 수도 있습 zip 파일에 임의의 인코딩-"비준수"지퍼로 잠급니다.

DotNetZip 은 무료입니다,및 오픈 소스 소프트웨어입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top