zip解压后中文文件名全是乱码怎么办
问题
同事在 Mac 或 Linux 上打包发来的 zip,在 Windows 上解压后,文件内容都好的,就是文件名全变成「¥æ¥¡」这类乱码;反过来,Windows 打的包发给别人,对方也报乱码。文件本身没坏,就是名字没法看。
最常见原因
老 zip 格式规范没有强制规定文件名的编码:Windows 中文系统压缩时用 GBK 编码记文件名,Mac/Linux 用 UTF-8。跨系统解压时,解压软件按自己的默认编码去解读,码表对不上,名字就花了。文件内容不受影响,只是名字遭殃。
分步解决
方法一:换用能指定编码的解压工具(首选,不动原文件)。
- 用 7-Zip 打开压缩包(不是解压,先浏览);
- 菜单「查看 → 排序/名称」里如果名字正常显示,直接把文件拖出来就行;
- 仍乱码的话,用支持手动选编码的工具(如 Bandizip 或其他带编码选项的解压器),解压时把编码从默认切到 UTF-8(收 Mac/Linux 的包)或 GBK/CP936(收 Windows 老包给 Mac 用户时反向操作),文件名即恢复。
方法二:已知来源是 Mac/Linux 时,让发送方重打包:压缩时选 7z 格式(7z 规范强制 UTF-8,跨平台最稳),或打 tar.gz。一劳永逸。
方法三:批量改名抢救。文件已经解出来了、名字已乱:
- 别慌着重命名,先确认内容完好;
- 数量少就手工改名;数量多可以用支持编码转换的批量重命名工具处理;
- 下次记得先按方法一正确解压,而不是解完再修。
方法四:Linux/macOS 侧接收 Windows 的包,解压命令加参数:unzip -O CP936 文件名.zip,按 GBK 解读文件名,乱码立解。
怎么预防
- 跨系统协作统一用 7z 格式,或压缩前把文件名改成英文/数字;
- 公司内部约定压缩工具和格式,别各用各的;
- 收到乱码包别急着解压覆盖,先用 7-Zip 浏览确认内容,再选对编码解出。