主要原因是,在windows下压缩文件时,是以系统的默认编码(gbk,gb18030)来压缩,zip文件并没有声明编码的格式,因此,linux下解压缩时,也会使用系统默认的格式(utf-8)解压缩,编码格式不同,自然会出现乱码。
解决办法,linux下解压zip文件时声明一下编码即可。
比如对于某个windows下用zip压缩的文件 xx.zip
解压时,可以利用
$ unzip -O CP936 xx.zip
很方便,亲测~
实际上,CP936用GBK, GB18030也是可以的。
补充,一般rar文件在linux解压时并不会出现文件名乱码的情况,主要原因是rar文件头声明了压缩时的编码。所以大家以后为了方便,尽量还是用rar方式压缩吧。