Unicode UTF-8を使用するように解凍されたリストを強制する方法

Unicode UTF-8を使用するように解凍されたリストを強制する方法

圧縮

zip -r --symlinks ../a.zip a a.txt 
  adding: a/šáčžřŠÁČÝŘŽÚ§/ (stored 0%)

ファイル名はUnicode形式で正しく保存されます。

リスト

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??§/

解凍リストは不都合な文字を印刷します。

解凍するとファイル名が正しく復元されるため、ファイル名はUnicodeとしてzipに正しく保存されますが、正しいUnicode文字でzipリストを表示する必要があります。

正しいUnicodeでリストを印刷するにはどうすればよいですか?これはシェル設定に関連していますか?

ロケール

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-8UTF-8で終わるものを試してください。

私はこれをUbuntuシステムで試しましたが、これはMac OSでも動作すると思います。また、
現在あなたのロケールに設定されているか、コメントで提案されているように設定すると、あなたと同様の問題のある出力が表示されることがわかりました。LANG=""LANG=UTF-8

おすすめ記事