7z x
파일에 등록하자
'20 ª.1 ¯® '$'\302\212''¨à®¢®£à ¤áª ï ã«.rtf' IMG_6527.JPG
''$'\302\212''¨à®¢®£à ¤áª ï, ¨áâ.doc' IMG_6532.JPG
''$'\302\204''®¯ ᮣ« 襨¥(3).doc' IMG_6542.JPG
''$'\302\204\302\212\302\217''.doc' IMG_6543.JPG IMG_6526.JPG
분명히 일부 파일은 다르게 인코딩되어 7z
기본적으로 UTF-8로 변환되지 않습니다. 7z
변환이 발생하도록 하려면 어떻게 해야 합니까 ?
문자 집합에 대해 내가 찾은 유일한 옵션은 다음과 같습니다.
-scc{UTF-8|WIN|DOS}
: 콘솔 입/출력의 문자셋을 설정합니다
-scs{UTF-8|UTF-16LE|UTF-16BE|WIN|DOS|{id}}
. : 목록 파일의 문자셋을 설정합니다.
WIN
, DOS
, UTF-8
작동 안함. 설정된 문자를 추측하려고 할 때
7z -scsCP1251 l 26-08-2016_10-18-14.zip
7z는 경고를 제공합니다.
Unsupported charset: cp1251
unzip
이것이 맞습니까(키릴 문자로 변환):
'20 к.1 по Кировоградская ул.rtf' IMG_6532.JPG 'Доп соглашение(3).doc'
26-08-2016_10-18-14.zip IMG_6542.JPG 'Кировоградская, ист.doc'
IMG_6526.JPG IMG_6543.JPG
IMG_6527.JPG ДКП.doc
추가 재료
- p7zip 버전:
15.14.1 (locale=ru_RU.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs AMD Phenom(tm) II X4 960T Processor (100FA0),ASM)
od -tx1z -Ax
아카이브 시작 부분의 16진수 덤프( ):000000 50 4b 03 04 14 00 00 00 00 00 81 54 1a 49 7e 35 >PK.........T.I~5< 000010 fa 34 00 ec 00 00 00 ec 00 00 07 00 17 00 84 8a >.4..............< 000020 8f 2e 64 6f 63 75 70 13 00 01 19 fd 45 54 d0 94 >..docup.....ET..< 000030 d0 9a d0 9f 2e 64 6f 63 00 00 00 00 d0 cf 11 e0 >.....doc........< 000040 a1 b1 1a e1 00 00 00 00 00 00 00 00 00 00 00 00 >................< 000050 00 00 00 00 3e 00 03 00 fe ff 09 00 06 00 00 00 >....>...........< 000060 00 00 00 00 00 00 00 00 01 00 00 00 71 00 00 00 >............q...< 000070 00 00 00 00 00 10 00 00 73 00 00 00 01 00 00 00 >........s.......< 000080 fe ff ff ff 00 00 00 00 70 00 00 00 ff ff ff ff >........p.......< 000090 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >................< * 000230 ff ff ff ff ff ff ff ff ff ff ff ff ec a5 c1 00 >................< 000240 07 80 19 04 00 00 f0 12 bf 00 00 00 00 00 00 10 >................< 000250 00 00 00 00 00 08 00 00 72 7b 00 00 0e 00 62 6a >........r{....bj< 000260 62 6a 2a 16 2a 16 00 00 00 00 00 00 00 00 00 00 >bj*.*...........< 000270 00 00 00 00 00 00 00 00 19 04 16 00 34 8e 00 00 >............4...< 000280 48 7c 00 00 48 7c 00 00 4b 2c 00 00 00 00 00 00 >H|..H|..K,......< 000290 19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................< 0002a0 00 00 00 00 00 00 00 00 ff ff 0f 00 00 00 00 00 >................< 0002b0 00 00 00 00 ff ff 0f 00 00 00 00 00 00 00 00 00 >................< 0002c0 ff ff 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 >................< 0002d0 00 00 00 00 b7 00 00 00 00 00 3e 0e 00 00 00 00 >..........>.....< 0002e0 00 00 3e 0e 00 00 a0 1b 00 00 00 00 00 00 a0 1b >..>.............< 0002f0 00 00 00 00 00 00 a0 1b 00 00 00 00 00 00 a0 1b >................< 000300 00 00 00 00 00 00 a0 1b 00 00 14 00 00 00 00 00 >................< 000310 00 00 00 00 00 00 ff ff ff ff 00 00 00 00 b4 1b >................< 000320 00 00 00 00 00 00 b4 1b 00 00 00 00 00 00 b4 1b >................< 000330 00 00 38 00 00 00 ec 1b 00 00 84 00 00 00 70 1c >..8...........p.< 000340 00 00 34 00 00 00 b4 1b 00 00 00 00 00 00 b8 28 >..4............(< 000350 00 00 e6 01 00 00 a4 1c 00 00 00 00 00 00 a4 1c >................< 000360 00 00 00 00 00 00 a4 1c 00 00 00 00 00 00 a4 1c >................< 000370 00 00 00 00 00 00 a4 1c 00 00 00 00 00 00 d8 1d >................< 000380 00 00 00 00 00 00 d8 1d 00 00 00 00 00 00 d8 1d >................< 000390 00 00 00 00 00 00 43 28 00 00 02 00 00 00 45 28 >......C(......E(< 0003a0 00 00 00 00 00 00 45 28 00 00 00 00 00 00 45 28 >......E(......E(< * 0003c0 00 00 00 00 00 00 45 28 00 00 00 00 00 00 9e 2a >......E(.......*< 0003d0 00 00 a2 02 00 00 40 2d 00 00 da 00 00 00 45 28 >[email protected](< 0003e0 00 00 2d 00 00 00 00 00 00 00 00 00 00 00 00 00 >..-.............< 0003f0 00 00 00 00 00 00 a0 1b 00 00 00 00 00 00 d8 1d >................< 000400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................< 000410 00 00 00 00 00 00 d8 1d 00 00 00 00 00 00 d8 1d >................< 000420
답변1
zip 파일을 생성하는 데 사용된 인코딩에 따라 로케일을 일시적으로 "C"로 설정하여 원치 않는 번역을 방지할 수 있습니다.
LC_ALL=C 7z x $archive
(이것은 IZArc가 두 개의 샘플 파일 이름을 사용하여 Win7에서 zip을 생성하는 데 도움이 됩니다.)
그러나 문제의 아카이브에 대해 "파일 이름" 필드에는 84 8a 8f 2e 64 6f 63
"ДКП.doc"의 CP1251 인코딩( )이 포함되어 있습니다. "extra" 필드는 Info-zip 확장자를 사용합니다(섹션 4.6.9 참조).우편번호 사양 v 6.3.4) UTF-8 파일 이름을 저장합니다. unzip
이 헤더를 알고 CP1251 이름을 무시하고 UTF-8 이름을 사용하십시오.
7z
이 "추가 필드"에는 아무 작업도 수행하지 말고 CP1251만 사용하십시오. 현재 로케일에 따라 84 8a 8f
정확한 이름(원시 바이트)으로 파일을 생성할 수도 있고, 더 나쁜 경우 c2 84 c2 8a c2 8f
먼저 UTF-8로 확장된 유니코드 포인트( )로 처리할 수도 있습니다.
한 가지 옵션은 외부 유틸리티를 사용하여 zip
첫 번째 유틸리티를 변경하는 것입니다.
#!/bin/bash
cp orig.zip renamed.zip
index=0
zipinfo -1 orig.zip | while read name ; do
ziptool renamed.zip rename $index "$name"
index=$((index+1))
done
ziptool
~에서압축을 풀다. zipinfo
다음 지역에 배포됨Info-ZIP 압축 풀기, 방금 사용했을 수도 있습니다 unzip
.
답변2
p7zip
p7zip 페이지에서 "Igor Pavlov"의 저자인 Igor Pavlov와의 토론 주제를 찾았습니다.Linux의 OEM 문자 집합 문제. 이것이 이 Q&A의 쌍둥이입니다. 이 기사에 모든 내용이 나와 있습니다.
-mcp 스위치는 p7zip에서 작동하지 않을 수 있습니다. 그러나 -mcp는 7-zip(Windows 버전)에서 작동합니다. 이제 p7zip으로 작동시키는 방법을 모르겠습니다. 기능: CPP\Common\StringConvert.cpp의 MultiByteToUnicodeString(const AString &srcString, UINT codePage) 녹슬기
2016년 4월 18일자. 7월부터 최신 p7zip 버전을 확인했는데 스위치가 아직 없습니다. 적어도 문서에서는 테스트하지 않았기 때문에.
답변3
답변4
사용7z -scs1251 l 26-08-2016_10-18-14.zip