Windows 자원 관리자, 파일 이름 UTF-8로 인코딩된 ZIP 파일을 7-Zip으로 압축 해제하기 위해 ZIP 파일에서 EFS를 사용해야 합니까?
이벤트
Zip4j에서 UTF-8로 파일 이름을 압축했습니다.
이 ZIP 파일에는 다음과 같은 파일 구성이 있습니다.
files
ああああ.txt
그러나 Windows 10의 브라우저와 7-Zip으로 이 파일을 해제하려고 시도할 때 이'아아.txt'는'갈등≠갈등≠txt'로 바뀌었다.바이너리 편집기에서 ZIP 파일을 연 결과는 여기에 있습니다.
오른쪽의 표기는 UTF-8로 표시된 내용입니다. "아아.txt"를 확인할 수 있기 때문에 정상적으로 UTF-8로 ZIP에 쓰는 것 같습니다.
EFS란 무엇입니까?
ZIP 사양 APPNOTE.txt 을 확인했는데 EFS (Language encoding flag) 가 있습니다.
APPNOTE.참조는 txt:.
Bit 11: Language encoding flag (EFS). If this bit is set,
the filename and comment fields for this file
MUST be encoded using UTF-8. (see APPENDIX D)
요약하면 플래그가 유효하면 파일 이름과 주석은 UTF-8로 인코딩해야 합니다.EFS는 로컬 파일 헤더와 중앙 디렉터리 헤더의 일반적인 목표 위치 표시(generalpurpose bit flag)로 설정됩니다.
상술한 캡처의 붉은 테두리는 상응하는 곳이다.
모두 0이므로 Zip4j에서 압축한 ZIP 파일에 EFS가 설정되지 않은 것 같습니다.
실험
Windows 브라우저와 7-Zip을 만들었습니다. 이 EFS가 유효할 때 UTF-8 해동으로 판단되는 설치라는 가설입니다.
따라서 우리는 바이너리 편집기에서 해당하는 ZIP 파일을 사용하기로 결정했다.
스타일북에 11이 기재되어 있기 때문에 오른쪽부터 0부터 계산하기 시작하여 12번째는 1이 되었다.
0000 1000 0000 0000
ZIP는 이터레이션 순서이므로 순서를 변경합니다.0000 0000 0000 1000
16진수로 변경합니다.00 08
그 결과 아래 화면 스냅샷처럼 여러 바이트 문자의 파일 이름을 사용하는 로컬 파일 헤더와 중앙 디렉터리 헤더의 일반적인 목적 표지판을 "0008"위에 덮어쓰려고 합니다.그 결과 윈도우즈 10의 브라우저와 7-Zip에서 압축을 풀려고 시도했을 때 디코딩 없이 압축을 풀었다.
따라서 Windows 10의 브라우저와 7-Zip은 EFS가 유효하면 파일 이름이 UTF-8로 압축을 풀 수 있다고 생각합니다.
지원
Reference
이 문제에 관하여(Windows 자원 관리자, 파일 이름 UTF-8로 인코딩된 ZIP 파일을 7-Zip으로 압축 해제하기 위해 ZIP 파일에서 EFS를 사용해야 합니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Teloo/items/9cfd3b39a2a5cebf61b8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)