英文版 Windows 打开 ZIP 压缩包文件名乱码怎么办?
1 问题
有很多海外 MOS 学员询问谷月老师,用英文版 Windows 打开 ZIP 压缩包,发现压缩包里的文件名是乱码。怎么办?
2 分析
简而言之,这是因为英文版的 Windows 内置的“压缩文件夹”(Compressed folder)功能无法正确解码压缩包内文件名中的汉字。
3 解决
谷月老师有两种解决办法,一是修改 Windows 的当前区域设置(Current System Locale),让 Windows 能正确解码压缩包内文件名中的汉字;二是使用能正确解码的第三方压缩软件。
3.1 修改 Windows 设置
此修改是可逆的,如果在运行某些来自欧洲的软件出现乱码时,可以将此项改回来。
操作步骤:点击【Start】➡【Settings】(或者按下【Win + I】键)➡【Time and Language】➡【Language】➡【Administrative language setting】➡【Administrative】选项卡➡【Change System Locale】,把【Current System Locale】从【English (United Status)】改成【Chinese (Simplified, China)】,点击【OK】,重启系统。
执行以上步骤以后,再双击打开 ZIP 压缩包,Windows 就可以正确显示压缩包内文件名中的简体中文了。而且,解压之后,文件名也是正确的,没有乱码。
3.2 使用第三方压缩软件
谷月老师建议使用 Bandizip 6.x。Bandizip 有很强的编码识别功能,可以轻松搞定文件名中的乱码。注意,6.x 是最后的免费版本,从 7.0 开始收费,因此谷月老师建议用 6.x 版。
用 Bandizip 6.26 Portable 打开压缩包,点击【Code Page】➡【Simplified Chinese】,就可以正确地显示文件名中的简体中文。而且,用 Bandizip 解压之后,文件名也是正确的,没有乱码。
下载方式:关注谷月老师的公众号【谷月老师讲Office】(kukmoon-office),回复【Bandizip】(不需要加两边的括号),获取下载地址。
4 总结与讨论
在 Windows 中,为了保持对旧版 Windows 的兼容,文件名的编码是 ANSI 编码,而不是当代全球通用的 UTF-8 编码。
至于 ZIP 压缩包,由于 ZIP 在问世时,Unicode 及 UTF-8 尚未问世,因此 ZIP 原生不支持 UTF-8 编码。
Windows 内置的“压缩文件夹”工具,在创建压缩包时,根据当前操作系统的代码页为文件名编码。简体中文版 Windows 的代码页是 936,具体的编码是 GBK,而英文版 Windows 的代码页是 437,具体的编码是 Windows-1252。后者无法解读前者,因此无法正确显示压缩包内文件名中的汉字。
2007 年,ZIP 格式的拥有者 PKWARE 公司发布了一个补丁,让 ZIP 格式最终可以支持 UTF-8。用户既可以强行用 UTF-8 编码和存储压缩包中的文件名(以前,Mac、Linux、Unix 用户就是这样做的),又可以保持文件名的原始编码,而把 UTF-8 版本的文件名保存到 ZIP 压缩包的文件头。
尽管 RAR 和 7Z 格式都是原生支持 UTF-8 的,可以彻底消除文件名乱码的问题,,但是,由于 ZIP 历史长而且授权是开放的,因此它的应用范围很广,RAR 和 7Z 始终难以取代 ZIP,更不要说 RAR 是闭源格式,还存在版权问题。至少目前谷月老师仍然坚持以 ZIP 格式分享资料和打包。
图片版权
题图:自绘。Zip format icons created by Freepik - Flaticon. White abstract vector created by freepik - www.freepik.com
头图: