压缩
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??§/
unzip list 打印蹩脚的字符。
文件名以 unicode 正确存储在 zip 中,因为解压缩可以正确恢复它们,但我需要以正确的 unicode 字符显示 zip 列表。
如何以正确的 unicode 打印列表?这和 shell 设置有关系吗?
语言环境
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 操作系统。我还验证了在按照您的区域设置中当前设置或按照注释中的建议进行
设置时,我得到了与您类似的有问题的输出。LANG=""
LANG=UTF-8