Zip的编码问题

2019年8月5日 - 臧志强


昨天整理MO资源包的时候,突然发现zip包里的文件名编码好像有点问题。我先是用7-zip在Win10中文区域配置下打包出了一个zip,然后当我把Win10的“非Unicode程序的语言”调成英文时,zip解压出的文件中原来的中文文件名会以乱码显示。我想,八成又是编码问题,不知道是哪里又没有用UTF-8。

在谷歌了一通之后,大概明白了原因,梳理如下:

  1. 使用7-zip软件制作zip压缩包时,7-zip不会默认采用UTF-8编码,而是默认采用操作系统当前的编码。只有当文件名中含有当前系统编码不支持的字符时,7-zip才会对该文件名使用UTF-8编码。
  2. Win10下“非Unicode程序的语言”会影响此处的文件名的当前系统编码。
  3. 鉴于上述原因,当我在2处使用中文时,1处会使用GBK编码(猜的,反正是某种中文编码)。因此,当我将2处设置改成英文后,在解压时就无法识别GBK编码了。

综上,该问题的解决方案有如下几种:

  1. 把Win10下“非Unicode程序的语言”设置成中文。
  2. 在使用7-zip压缩时添加“cu”参数。

版权声明

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。