7z의 문자 인코딩을 지정하는 방법은 무엇입니까?

7z의 문자 인코딩을 지정하는 방법은 무엇입니까?

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

p7zipp7zip 페이지에서 "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

P7ZIP 16.02 [64비트] 확인(Xubuntu/Ubuntu 18.04.2 LTS)

키릴 문자는 여전히 문제입니다.

  • 압축 해제 가능 - 콘텐츠는 정상이며 압축 해제 시 이름이 손상되었습니다.
  • 파일이 보관되지 않으면 쉽게 사용할 수 없습니다.

여기에 이미지 설명을 입력하세요.

답변4

사용7z -scs1251 l 26-08-2016_10-18-14.zip

관련 정보