linux and windows 解决压缩文件编码乱

解决压缩文件编码乱

想要跨平台制作一个压缩包,比如想在Windows下制作一个可在Linux下用的zip,可不是那么容易,会遇到两个问题:

  1. Windows文件是没有权限的,而权限对于Linux下的文件至关重要,尤其是执行权限。
  2. 不同的系统下文件名的编码规则是不一样的,所以对于非ASCII文件名,比如中文文件名,可能出现乱码。

如果是在Linux下打包到Windows下使用,上面的问题1不会出现,但问题2仍然是有的,我被迫耐心的对tar/zip/rar/7z做了些测试,结果是这个样子的:

  • 只有tar文件解开后才能具有正确的权限(或者说是宽松的权限),其他格式在Linux下解开后都只有644的权限,如果要执行某个文件,还要再用chmod来修改权限。
  • 只有7z和RAR可以正确识别文件名的编码,而tar/zip在不同编码的Windows系统和Linux系统下,遇到中文文件,解压后文件名会乱码。

我的结论是这样子的:

  1. 绝大部分时候tar.gz应该是最好的选择,本身这种格式很通用,压缩率高,文件权限又没有问题。但如果涉及中文文件,则要考虑Linux下的Locale,使用正确的编码去做压缩,通常在Windows下直接压缩tar.gz,文件名应该是gb码编码的。
  2. 如果压缩包中有中文文件,且你不知道你的用户会使用什么Locale,并且你的压缩包中叶没有可执行文件,你的用户也知道如何解压缩7z格式的话,这个时候7z是个好的选择,它可以保证绝对不会出现文件名乱码的问题,因为7z在压缩包中已经指明了使用何种编码编码了文件名,这样解压缩时它会根据本地locale转换一下就绝对不会错了。

 

压缩用法:7za a -t7z test.7z java

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值