主要原因是,在windows下压缩文件时,是以系统的默认编码(gbk,gb18030)来压缩,zip文件并没有声明编码的格式,因此,linux下解压缩时,也会使用系统默认的格式(utf-8)解压缩,编码格式不同,自然会出现乱码。

解决办法,linux下解压zip文件时声明一下编码即可。
比如对于某个windows下用zip压缩的文件 xx.zip

解压时,可以利用

$ unzip -O CP936 xx.zip
很方便,亲测~

实际上,CP936用GBK, GB18030也是可以的。