`

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

 

分享到:
评论

相关推荐

    linux.chm文档

    打包和压缩文件 bunzip2 file1.bz2 解压一个叫做 'file1.bz2'的文件 bzip2 file1 压缩一个叫做 'file1' 的文件 gunzip file1.gz 解压一个叫做 'file1.gz'的文件 gzip file1 压缩一个叫做 'file1'的文件 gzip -9...

    网管教程 从入门到精通软件篇.txt

    Axx:ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取01-99的数字) A3L:Authorware 3.x库文件 A4L:Authorware 4.x库文件 A5L:Authorware 5.x库文件 A3M,A4M:Authorware Macintosh...

    JAVA上百实例源码以及开源项目

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    JAVA上百实例源码以及开源项目源代码

    Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码...

    新版Android开发教程.rar

    o Apache Ant 1.6.5 or later for Linux and Mac, 1.7 or later for Windows o Not Not Not Not compatible with Gnu Compiler for Java (gcj) Note: Note: Note: Note: If JDK is already installed on your ...

    gsoap 2.8 (SOAP/XML 关于C/C++ 语言的自动化实现工具内附 CSharp webservice例子,及GSOAP client和server例子)

     ×跨平台:Windows, Unix, Linux, Mac OS X, Pocket PC, Palm OS, Symbian等。  ×支持序列化程序中的本地化C/C++数据结构。  ×可以使用输入和输出缓冲区来提高效率,但是不用完全消息缓冲来确定HTTP消息的长度...

    dive into python

    1.2. Windows 上的 Python 1.3. Mac OS X 上的 Python 1.4. Mac OS 9 上的 Python 1.5. RedHat Linux 上的 Python 1.6. Debian GNU/Linux 上的 Python 1.7. 从源代码安装 Python 1.8. 使用 Python 的交互 ...

    [完整][中文][WEB安全测试].(美)霍普.扫描版.pdf

     Paco Hope,是Cigital公司的一名技术经理,《Mastering FreeBsD and 0penBsDsecurity》 (由O’Reilly出版)的合著者之一。他也发表过有关误用、滥用案例和PKI的文章。他曾被邀请到会议就软件安全需求、Web应用...

    openssl编程

    2.2.1 linux下的安装 13 2.2.2 windows编译与安装 14 2.3 openssl源代码 14 2.4 openssl学习方法 16 第三章 堆栈 17 3.1 openssl堆栈 17 3.2 数据结构 17 3.3 源码 18 3.4 定义用户自己的堆栈函数 18 3.5 编程示例 ...

    openssl 编程 当前版本

    2.2.1 linux下的安装 13 2.2.2 windows编译与安装 14 2.3 openssl源代码 14 2.4 openssl学习方法 16 第三章 堆栈 17 3.1 openssl堆栈 17 3.2 数据结构 17 3.3 源码 18 3.4 定义用户自己的堆栈函数 18 3.5 编程示例 ...

    java开源包1

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    java开源包11

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    java开源包2

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    java开源包3

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    java开源包6

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    java开源包5

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    java开源包10

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    java开源包4

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    java开源包8

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

Global site tag (gtag.js) - Google Analytics