unzip -O cp949 xxx.zip
-O
옵션은 압축을 풀 때 사용할 문자 인코딩을 지정하는 옵션이다. 여기서 cp949는 Windows에서 주로 사용하는 한글 인코딩 방식이다.
우분투에서 ZIP 파일의 압축을 풀었을 때 한글이 깨지는 현상은 주로 문자 인코딩의 차이로 인해 발생한다.
ZIP 파일은 파일명을 저장할 때 문자 인코딩 정보를 명시적으로 포함하지 않는 경우가 많다. 그래서 ZIP 파일을 작성한 운영체제나 프로그램에 따라 인코딩 방식이 달라지게된다.
한국에서 많이 쓰는 Windows의 경우 기본적으로 파일명을 EUC-KR 또는 CP949라는 인코딩으로 저장하는데, 리눅스 기반의 우분투는 UTF-8 인코딩을 기본으로 사용한다.
Windows에서 압축된 ZIP 파일의 파일명은 CP949나 EUC-KR 인코딩을 따르지만, 우분투에서는 이를 UTF-8로 해석하려 하기 때문에 파일명이 깨져 보이게 되는 것이다.