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