一、常用用法
1 | unzip -O 解码文件名使用的编码方案 ZIP文件路径 |
二、含义与选项
2.1、含义
解压ZIP文件到当前目录,在解码文件名时使用指定的编码方案。
2.2、选项
“-O”:指定解码文件名时所使用的编码方案,详见“三、解压后文件名乱码”。
三、解压后文件名乱码
ZIP文件制作程序在制作ZIP文件时,默认使用所在操作系统的默认编码方案来编码待加入ZIP文件中的文件的文件名,ZIP文件中不存储这个使用的编码方案;而ZIP文件解压程序在解压ZIP文件时,默认也使用所在操作系统的默认编码方案来解码ZIP文件中的文件的文件名。如果解压时所在操作系统的默认编码方案跟制作时所在操作系统的默认编码方案不一致,那么在解压时解码得到的ZIP文件内文件的文件名就会出现乱码情形。
可以通过“-O”选项来应对这种情况,通过该选项可以指定解压时解码ZIP文件内文件的文件名所应该使用的编码方案。“-O”选项在“man unzip”中没有介绍,在“unzip –help”中有一句话的介绍。
比如在中文Windows下制作一个ZIP文件,待加入文件的文件名包含有中文字符,在中文Windows中,默认的操作系统编码方案是CP936,因而使用CP936来编码这些文件的文件名。现在想要将该ZIP文件在Linux下解压,Linux下默认的操作系统编码方案是UTF-8,因而我们需要通过“-O”选项来指定使用CP936编码方案来解码文件的文件名,这样子解压后的文件名才不会出现乱码。
另外,RAR文件中会存储制作RAR文件时编码文件的文件名时所使用的编码方案,因而在解压的时候,可以直接读取该值,使用该值表示的编码方案来解码RAR中文件的文件名。
参考文献: [1]man unzip [2]unzip --help [3]http://forum.ubuntu.org.cn/viewtopic.php?f=122&t=175405&p=1343326 [4]http://blog.sina.com.cn/s/blog_6261f8690101c1gx.html