압축
zip -r --symlinks ../a.zip a a.txt
adding: a/šáčžřŠÁČÝŘŽÚ§/ (stored 0%)
파일 이름은 유니코드 형식으로 올바르게 저장됩니다.
목록
unzip -l ../a.zip
Length Date Time Name
--------- ---------- ----- ----
0 03-11-2021 14:40 a/s??a??c??z??r??S??A??C??Y??R??Z??U??§/
압축 해제 목록은 형편없는 문자를 인쇄합니다.
압축을 풀면 파일 이름이 올바르게 복구되므로 파일 이름은 유니코드로 zip에 올바르게 저장되지만 올바른 유니코드 문자로 zip 목록을 표시해야 합니다.
올바른 유니코드로 목록을 인쇄하려면 어떻게 해야 합니까? 이것이 쉘 설정과 관련이 있습니까?
로케일
LANG=""
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=
내 것은 MacOS 시스템입니다.
모두 시도해 보았으나 결과는 동일했습니다 :-(
LC_ALL=UTF-8 zip...
LC_ALL=UTF-8 unzip...
LANG =UTF-8 zip...
LANG =UTF-8 unzip...
또한 모든 언어 변형을 시도했습니다.
LANG=cs_CZ.UTF-8 unzip -l ../unzip.zip
LANG=en_US.UTF-8 unzip -l ../unzip.zip
이러한 모든 언어 변형이 나열되어 있지만 locale -a
여전히 잘못된 출력이 생성됩니다. :-(
bsdtar
로케일 설정 없이도 작동합니다.
bsdtar tvvf ../unzip.zip
drwxr-xr-x 0 501 20 0 Mar 11 14:40 a/šáčžřŠÁČÝŘŽÚ§/
Archive Format: ZIP 1.0 (uncompressed), Compression: none
답변1
그것은 함께 있어야합니다
LANG=en_US.UTF-8 unzip -l a.zip
UTF-8은 LANG에 유효한 값이 아닙니다. 사용 가능한 로케일을 나열하려면 다음을 시도하십시오.
locale -a
여기에 나열되지 않은 경우 en_US.UTF-8
나열되고 UTF-8로 끝나는 것 중 하나를 시도해 보십시오.
나는 이것을 Ubuntu 시스템에서 시도했지만 이것이 Mac OS에서도 작동할 것이라고 믿습니다. 또한
현재 귀하의 로케일에 설정되어 있거나 의견에서 제안된 대로 설정하면 귀하와 비슷한 문제가 있는 출력이 나오는 것을 확인했습니다 .LANG=""
LANG=UTF-8