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が2つのサンプルファイル名を使用して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で拡張されたUnicodeポイント()として扱うこともできます。

1つのオプションは、外部ユーティリティを使用して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

関連情報