Linux 下 ZIP 文件解压后文件名称乱码问题处置

1 minute read

问题原因

ZIP 在创建压缩时没有指定编码格式,Windows 下生成的 ZIP 包中使用的编码为 GBK/GB2312 等,而 Linux 下的默认编码为 UTF8,导致这些 ZIP 包在 Linux 下解压时出现乱码问题。

解决方法

方法一

不使用 Unzip,使用 7z 解压。

1LANG=C 7za x <your-zip-file>.zip

部分系统有效,如果此方法无效可尝试下面提供的方法。

方法二

1unzip -O GBK <your-zip-file>.zip

方法三

1LANG=zh_CN.GBK 7za e <your-zip-file>.zip

番外

最早的 GBK 编码,是 IBM 定制的 MBCS 字符集,汉子编码正好在整个字符集中的 936 页,因此部分地方会用 CP936 来代表 GBK。

参考资料