반응형
윈도우에서 한글파일명을 가진 파일을 zip으로 압축한후에 리눅스에서 풀면 파일명이 깨져서 제대로 풀리지 않습니다. 그이유는 zip 파일은 파일명을 유니코드로 저장하지 않기 때문입니다. 윈도우에서는 파일명에 유니코드를 사용하지 않기 때문에 utf-8을 쓰는 리눅스에서 압축을 풀면 파일명이 깨져 보이는 것 입니다.

이를 방지하는 방법은 파일을 윈도우에서 압축할때 winrar 이나 7zip등으로 rar,7z 으로 압축하면 해결됩니다. 하지만 zip파일을 풀어야 할때도 있죠.

리눅스에선 zip파일의 압축을 풀때 unzip을 씁니다. 다른 GUI 압축해제 프로그램에서도 쓰고요. 예전엔 그래서 이 unzip을 패치하는 방법도 있었는데 최근에는 압축을 해제할때 옵션을 줄 수 있게 되었더군요.

일단 한글파일명 파일을 그냥 한번 들여다 보죠. file2.zip에는 한글파일을 하나 넣어 두었습니다.

터미널에서 'unzip -l file2.zip' 을 입력했습니다.


이렇게 나옵니다. 파일명이 깨져서 나오죠.

그럼 다음엔 이렇게 입력해 보죠. 'unzip -l -O cp949 file2.zip'



한글 파일명이 제대로 보이는 것을 알 수 있습니다.  '-O cp949' 옵션을 썼습니다. -O 는 영문 대문자 O입니다. 혹시 헛갈리실 까봐.... -O 옵션에 각 언어에 맞는 인코딩 값을 넣어주면 다른나라 윈도우에서 압축한 외국파일명도 제대로 풀 수 있습니다.

캡쳐는 하지 못했지만 일본어 윈도우에서 만든 일본어 파일명을 가진 zip 파일의 경우 한글 윈도우에서 압축을 풀면 파일명이 깨져 나옵니다. 재대로 풀 수 없죠. 윈도우에서는 어플로케일로 압축프로그램을 실행해서 압축을 해제하는 방법이 있습니다만...

리눅스에선 unzip을 이용해서 압축을 풀수 있습니다. -O 옵션에 shift-jis 나 euc-jp 를 넣으면 될겁니다. 일본어 인코딩에 대해선 잘 몰라서 어느게 맞는지는 잘 모르겠는데요. 제가 시험해 본 파일은 shift-jis 로 하니 파일명이 제대로 나오더군요.

예전엔 한글파일명의 zip파일을 풀때 wine으로 압축프로그램을 실행해서 풀기도 했었습니다. 그러면 파일명이 제대로 나왔었거든요. wine 의 특성상 그런거겠죠.

이젠 그냥 unzip으로 풀면되니 wine 쓸일이 하나 줄었네요. ^^;


+ Recent posts