ZipOutputStream
으로 Windows (7)에 파일을 압축하려고합니다. 문제는 파일 이름과 파일 파일 내용에도 그리스 문자 ("ГП0000660040140521_a.txt
", 감마와 파이)가 포함되어 있다는 것입니다. 코드는 내가 사용하는 파일 압축하기 :그리스 문자가있는 파일을 압축하는 동안 "IllegalArgumentException : UNMAPPABLE [1]"
ZipOutputStream zipOs = new ZipOutputStream(
new FileOutputStream("c:\\temp\\test.zip"), Charset.forName("cp737")
);
File sourceFile = new File("C:/Path/To/File/ГП0000660040140521_b.txt");
String entryName = sourceFile.getName().replaceAll("\\\\", "/");
ZipEntry entry = new ZipEntry(entryName);
zipOs.putNextEntry(entry);
...
...
을하지만 마지막 줄합니다 (putNextEntry
호출)에 내가 얻을 IllegalArgumentException
: 나는 문자 매핑 사이에 뭔가 잘못이 있어야 가정
java.lang.IllegalArgumentException: UNMAPPABLE[1]
at java.util.zip.ZipCoder.getBytes(ZipCoder.java:95)
at java.util.zip.ZipOutputStream.writeLOC(ZipOutputStream.java:407)
at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:221)
그리스어 및 UTF-8 ... 이름이 파일에 그리스 문자가있는 파일을 압축하는 올바른 방법은 무엇입니까? 편집
나는 문자가 zip 파일을 만들 수 있습니다 설정할 수 있지만 압축 파일의 이름이 잘못로 "UTF-8"사용하는 경우
"ðôðƒ0000660040140521_a.txt
"(그리스 문자가 누락)
createZipEntry 메소드는 어떤 기능을합니까? – agad
@agad : 내 실수! 코드를 수정했습니다. 감사. – Steffen
이름이 "잘못"이라고하면 정확히 이것을 확인하고 있습니까? ZIP 파일을 검사 할 때 사용하는 도구는 무엇입니까? 도구를 만들 때 사용한 것과 같은 인코딩을 사용하여 파일 이름을 해석하고 있습니까? –