设为首页 收藏本站
查看: 995|回复: 0

[经验分享] 防止 7-Zip 生成的 ZIP 文件在 Mac OS X 下出现乱码

[复制链接]

尚未签到

发表于 2015-12-29 14:58:32 | 显示全部楼层 |阅读模式

May 3, 2009 @ 4:08 pm · Filed under 流水账

  一直以来,我发现在 Mac OS X 中,不论用 Stuffit Expander 还是命令行下的 unzip,解压缩 Windows 下生成的某些 ZIP 文件时,解出来的中文文件名会变成乱码。不过,这种情况出现的次数很少,没有引起我的重视。今天终于觉得不能忍了,以几个简单关键词在 Google 上搜索,好像没有发现专门说这件事情的。于是决心花点时间研究它。
  我在 Windows 下的 ZIP 文件大多数是用 7-Zip 这个自由软件生成的。虽然它的强项在于自己的 7z 格式,不过出于兼容性的考虑,我只是用它压缩 ZIP 格式文件,并解压缩所有常见的压缩文件格式。ZIP 文件标准自创立之初就没有、现在也没有记录文件名编码的信息,所以有很大一批 ZIP 文件都是以压缩包的创建者本地 locale 编码的,比如我遇到问题的几个 ZIP 文件内部的文件名就是用简体中文 GBK 编码的。而我 Mac OS X 的 locale 是 en_US.UTF-8,解开后自然不能正确识别 GBK 编码的文件名了。
  阅读了 ZIP 文件格式这个 Wikipedia 条目,我发现最新的 ZIP 标准中建议使用 UTF-8 作为文件名的编码。这一点并不出乎意料,显然对于跨平台的需求,UTF-8 的编码是最理想的选择。下面的问题就是如何让 7-Zip 生成以 UTF-8 编码被压缩文件名的 ZIP 文件了。
  在 Windows 下进行试验,我发现一个有意思的现象:当 Windows 系统的 locale 为简体中文(中国)时(“控制面板-区域和语言选项-高级-为非Unicode程序的语言选择 – Chinese (PRC)”),7-Zip 压缩出来的 ZIP 文件以 GBK 编码被压缩文件名;而当 Windows 系统的 locale 为英语(美国)时,压缩出来的 ZIP 文件编码竟然是 UTF-8!此外,在中文 locale 下,不论是以 GBK 还是 UTF-8 编码文件名的 ZIP 文件都能正常解开;而在英文 locale 下,只能解开 UTF-8 编码的文件,GBK 编码的文件解出来就是乱码。这表明, 7-Zip 是有处理 UTF-8 编码文件名的功能的。但是,为什么仅仅对英语(美国)代码页(也就是最基本的 ASCII )才会使用 UTF-8 呢?
  继续查找,发现 UTF-8 的版本历史里面,自从 4.58 版本以来引入了 ZIP 内部文件名编码的概念。默认模式是,对于生成 ZIP 文件的文件名,如果当前 locale 代码页中有相应字符,就用当前代码页;如果没有,就使用 UTF-8。同时,7-Zip 也提供了两个模式,强制以 UTF-8 编码文件名,或强制以当前 locale 编码文件名(即不作转换)。
  了解了这一点,解决方法就变得简单了:压缩 ZIP 文件时,使用 -mcu 选项强制使用 UTF-8 作为压缩文件名的编码。图形界面中的操作如下:
  需要注意的是,7-Zip 的 Explorer shell 右键菜单中“Add to .zip” 这个项目只能以默认参数生成 ZIP 文件。如果希望生成在其他平台不出现乱码的 UTF-8 编码 ZIP 文件,就只能使用 “Add to archive…” 菜单项了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-158060-1-1.html 上篇帖子: Mac OS X 中安装JDK 7 下篇帖子: phpMyAdmin在Mac OS X上的配置和使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表